EntityFramework.dll与System.Data.Entity.dll的区别--歧义性

13
我想知道 EntityFramework.dll 和 System.Data.Entity.dll 有什么相同和不同之处? 我的项目引用了 System.Data.Entity.dll (June CTP) 来利用 Code First Model,一切都正常。
现在我希望使用 Code First Migrations 工具,它需要 EntityFramework.dll,我也必须将其添加到我的项目中。 但是,当这两个库 (EntityFramework.dll 和 System.Data.Entity.dll) 都被引用时,我会得到许多编译器错误,因为某些类在两个库中都被定义。
当我删除 EntityFramework.dll 时,项目可以再次编译,但我无法使用 Migrations。 只有引用 EntityFramework.dll 时,我会收到编译器错误,告诉我找不到某些类 (例如 Spatial 数据类型)。
在这种情况下我该怎么办呢? 非常感谢!
1个回答

16

"System.Data.Entity.dll"版本为"4.2.0.0"(2011年6月CTP),包含了EFv4.0和EFv4.1的所有内容,即包括ObjectContext API和DbContext API以及新功能,但这很可能是长时间以来唯一将这两个API合并在同一个程序集中的版本。该CTP已经过时,新的核心功能将被移植到.NET 4.5,并且DbContext API仍将作为单独的NuGet软件包(entityframework.dll)发布。有关详细信息请参见这里

代码迁移依赖于EFv4.1 Update 1及其EntityFramework.dll,它们与June CTP不兼容,这在它们的安装说明或先决条件中有明确说明。因此,您不能在June CTP中使用它们。


好的解释,当我添加EF 4.3时,它只添加了EF dll,而entity.dll没有被升级。那么我可以使用新功能吗?项目在没有EF.dll的情况下编译。 - Dani
1
如果项目在没有 EntityFramework.dll 的情况下编译通过,那就意味着它没有使用它。 - Ladislav Mrnka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接