标签:
学习一种新技术的思路:
比如说,以EF为例:
首先,EF是一种ORM,解决的问题是对象和关系之间的映射问题,为什么要在对象和关系之间进行映射呢?其实理解新技术要解决什么问题这一点最难,因为我没有遇到过这种问题,所以也很难理解这个问题,比如说,我一直在使用简单的“事务脚本”的模式,根本没有使用“领域模型”,也就没有使用“对象”,也就根本没有遇到过需要将“对象”映射为“关系“的问题,所以理解不了EF到底要解决的“对象和关系之间进行映射”是什么问题,解决这个问题的基本思路是什么;等到你使用了“领域模型”后,才发现对象和关联之间的不匹配是个大问题,非常需要这样一个ORM框架;那么ORM(也就是EF)要解决的基本问题是:
要解决这个问题,ORM需要知道“领域模型”中的类及其属性和关系模型中的表及其字段之间是什么关系(也就是需要进行某种“配置”来表示这种关系),有了这个配置,需要某个机制能够利用这个配置,在对象和关系之间进行转换,这也意味着,这个“机制”要能够认识领域模型中的所有”类“,也要能够认识数据库中的所有表,它知道如何访问数据库,它要提供接口,供应用程序调用以便将数据库中的数据加载到内存中变成对象,将内存中的对象保存到数据库中。
这样我们就知道了ORM的基本结构,即1.需要有上面描述的那个“机制”以及这个机制需要具备的基本功能;2.需要能够对“类及其属性”和“表及其字段”之间的关系进行配置。
那么EF是怎么实现这个机制的呢?
EF用System.Data.Entity.DBContext来实现上面说的“机制”,用System.Data.Entity.Infrastructure.DbModel表示对象和关系之间的对应关系,用System.Data.Entity.DBModelBuilder来配置对象和关系之间的对应关系并生成DbModel。这几个类构成了EF的核心。
觉得有用的文章列表:
Code First:Inside DBContext Initialization.http://blog.oneunicorn.com/2011/04/15/code-first-inside-dbcontext-initialization/,这篇博客文章介绍了DBContext初始化的过程。
标签:
原文地址:http://www.cnblogs.com/leegsh/p/2942072.html