vs2010中可以添加Ado.net 实体数据模型,添加好了,就可以直接和数据库打交道了,crud之类的都可以通过继承于ObjectContext的那个类 xxxEntities来实现。但有个entityframework.dll文件(一般在“程序包管理控制台中使用 Install-Package EntityFramework” 来下载的),这个entityframework.dll和Ado.net 实体数据模型有什么关系吗?必须用到吗?因为 xxxEntities已经能够完成和数据库交互了,entityframework.dll的主要作用是什么呢?
版本新旧的关系。实体数据模型基类是ObjectContext,EF4.0前的,那时候不怎么流行。
然后4.1,增加了CodeFirst,基类变成的DbContext。【个人理解,仅供参考】
那也就是说,EntityFramework4.5,EntityFramework5.0,以及现在的EntityFramework6.0和DBFirst没有一毛钱关系了,都是和CodeFirst相关的了?
@hanshuhe: 不是。DBFirst,后期版本都有啊。
@幻天芒: 前期版本后4.1后的版本,命名空间都有变化的。
@幻天芒: DBFirst,不是直接建立Ado.net 实体数据模型模型就行了吗?不需要下载安装那个entityframework.dll,而且用DBFirst的时候,不需要引用entityframework.dll呀。你所说的后期版本,是不是就是下载不同版本的那个entityframework.dll(我认为就是这样,EntityFramework4.5,EntityFramework5.0就是下载了相应的entityframework.dll。)。如果是这样的话,DBFirst,不就和后来的版本没关系了吗?
@hanshuhe: DbFirst在先期版本中就有了,不过后期版本应该有性能优化吧。也就是说,在不引入EntityFramework.dll的时候,可以使用DBFirst,不能使用CodeFirst。在后期版本(>=4.1)中,DBFirst和CodeFirst都支持。估计还会有性能提升。
@幻天芒: 你的意思是,我下载entityframework.dll(5.0版本),那么当我用DBFirst的时候,用的是entityframework5.0的DBfirst,是这样吗?但DBfirst好像没用到entityframework.dll里面的东西呀?
@hanshuhe: 额,会用到了。
你看一下 EF 中的三种模式:DbFirst,Model-First,Code-first。
这三种模式我也懂呀,一个是先建数据库,一个是先见Model,一个是先编码,根据编码生成model,但这些和我提的问题,我找不到关联呀。谢谢指点呀
@hanshuhe: 因为它们分别使用 ObjectContext 或 DbContext 来实现。
@Launcher: 也就是说DbFirst,只要用ObjectContext 就可以了,Code-first要用DbContext ,是这样吗?
@hanshuhe: 对。
@Launcher: 那再请教一下,EntityFramework4.0,4.3,5.0,之类的版本号,是针对CodeFirst来说的吗?还是说我通过Install-Package EntityFramework -Version 5.0.0下载下来之后,Ado.net 实体数据模型(DBfirst)也更新到相应版本5.0版本了吗?(因为据说EntityFramework5.0比4.0性能上提高很多),这是最后一个问题了,谢谢你!祝你工作顺利
@hanshuhe: 你可以浏览下库中的对象,你会发现 EntityFramework 中根本就没有 ObjectContext 这个类型。所以它不影响 Db-First。
实体数据模型是EF的DataBase First方式与Model First方式中用到的,Code First方式中用不到,详见博文
个人推荐Code First方式
请教下,既然说CodeFirst没用到实体数据模型,那EF在进行查询时是否就不是基于EDM方式的呢?