首页 新闻 搜索 专区 学院

Ado.net 实体数据模型与EntityFramework的关系

0
悬赏园豆:10 [已解决问题] 解决于 2014-10-31 09:06

vs2010中可以添加Ado.net 实体数据模型,添加好了,就可以直接和数据库打交道了,crud之类的都可以通过继承于ObjectContext的那个类  xxxEntities来实现。但有个entityframework.dll文件(一般在“程序包管理控制台中使用 Install-Package  EntityFramework” 来下载的),这个entityframework.dll和Ado.net 实体数据模型有什么关系吗?必须用到吗?因为 xxxEntities已经能够完成和数据库交互了,entityframework.dll的主要作用是什么呢?

hanshuhe的主页 hanshuhe | 初学一级 | 园豆:3
提问于:2013-09-16 10:04
< >
分享
最佳答案
0

版本新旧的关系。实体数据模型基类是ObjectContext,EF4.0前的,那时候不怎么流行。

然后4.1,增加了CodeFirst,基类变成的DbContext。【个人理解,仅供参考】

收获园豆:5
幻天芒 | 高人七级 |园豆:36790 | 2013-09-16 11:50

那也就是说,EntityFramework4.5,EntityFramework5.0,以及现在的EntityFramework6.0和DBFirst没有一毛钱关系了,都是和CodeFirst相关的了?

hanshuhe | 园豆:3 (初学一级) | 2013-09-16 14:02

@hanshuhe: 不是。DBFirst,后期版本都有啊。

幻天芒 | 园豆:36790 (高人七级) | 2013-09-16 14:14

@幻天芒:   前期版本后4.1后的版本,命名空间都有变化的。

幻天芒 | 园豆:36790 (高人七级) | 2013-09-16 14:17

@幻天芒: DBFirst,不是直接建立Ado.net 实体数据模型模型就行了吗?不需要下载安装那个entityframework.dll,而且用DBFirst的时候,不需要引用entityframework.dll呀。你所说的后期版本,是不是就是下载不同版本的那个entityframework.dll(我认为就是这样,EntityFramework4.5,EntityFramework5.0就是下载了相应的entityframework.dll。)。如果是这样的话,DBFirst,不就和后来的版本没关系了吗?

hanshuhe | 园豆:3 (初学一级) | 2013-09-16 14:53

@hanshuhe: DbFirst在先期版本中就有了,不过后期版本应该有性能优化吧。也就是说,在不引入EntityFramework.dll的时候,可以使用DBFirst,不能使用CodeFirst。在后期版本(>=4.1)中,DBFirst和CodeFirst都支持。估计还会有性能提升。

幻天芒 | 园豆:36790 (高人七级) | 2013-09-16 15:28

@幻天芒: 你的意思是,我下载entityframework.dll(5.0版本),那么当我用DBFirst的时候,用的是entityframework5.0的DBfirst,是这样吗?但DBfirst好像没用到entityframework.dll里面的东西呀?

hanshuhe | 园豆:3 (初学一级) | 2013-09-17 09:00

@hanshuhe: 额,会用到了。

幻天芒 | 园豆:36790 (高人七级) | 2013-09-17 09:22
其他回答(2)
0

你看一下 EF 中的三种模式:DbFirst,Model-First,Code-first。

Launcher | 园豆:45045 (高人七级) | 2013-09-16 10:13

这三种模式我也懂呀,一个是先建数据库,一个是先见Model,一个是先编码,根据编码生成model,但这些和我提的问题,我找不到关联呀。谢谢指点呀

支持(0) 反对(0) hanshuhe | 园豆:3 (初学一级) | 2013-09-16 10:24

@hanshuhe: 因为它们分别使用 ObjectContext 或 DbContext 来实现。

支持(1) 反对(0) Launcher | 园豆:45045 (高人七级) | 2013-09-16 10:34

@Launcher: 也就是说DbFirst,只要用ObjectContext 就可以了,Code-first要用DbContext ,是这样吗?

支持(0) 反对(0) hanshuhe | 园豆:3 (初学一级) | 2013-09-16 10:50

@hanshuhe: 对。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2013-09-16 11:02

@Launcher: 那再请教一下,EntityFramework4.0,4.3,5.0,之类的版本号,是针对CodeFirst来说的吗?还是说我通过Install-Package  EntityFramework -Version 5.0.0下载下来之后,Ado.net 实体数据模型(DBfirst)也更新到相应版本5.0版本了吗?(因为据说EntityFramework5.0比4.0性能上提高很多),这是最后一个问题了,谢谢你!祝你工作顺利

支持(0) 反对(0) hanshuhe | 园豆:3 (初学一级) | 2013-09-16 11:12

@hanshuhe: 你可以浏览下库中的对象,你会发现 EntityFramework 中根本就没有 ObjectContext 这个类型。所以它不影响 Db-First。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2013-09-16 11:22
0

实体数据模型是EF的DataBase First方式与Model First方式中用到的,Code First方式中用不到,详见博文

Entity Framework之犹豫不决

个人推荐Code First方式

收获园豆:5
dudu | 园豆:36516 (高人七级) | 2013-09-16 11:14

请教下,既然说CodeFirst没用到实体数据模型,那EF在进行查询时是否就不是基于EDM方式的呢?

支持(0) 反对(0) 竹墨轩 | 园豆:58 (初学一级) | 2016-12-03 15:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册