我们的一台开发机器发出错误消息称DbContext
未实现IDisposable
。根据{{3}},这是因为我们没有引用EF 5.问题程序集具有使用旧版EF 4构造(*.edmx
)构建的ObjectContext
文件。同一个程序集还有一个新添加的*.edmx
文件,其中包含较新的构造(DbContext
)。
另一台机器上的另一个项目也使用DbContext
并且工作正常。所述项目显示EntityFramework.dll
的以下信息:
version: 4.4.0.0
Runtime Version: v4.0.30319
我检查了错误的构建机器,它也有EntityFramework.dll
的相同版本。
Microsoft在开发和营销版本命名约定之间存在令人困惑的冲突。那么EF 5是否意味着 dll版本应该说5.0?
换句话说,我是否在良好的构建机器上运行v4.0?如果是这样,为什么构建成功?
答案 0 :(得分:6)
Entity Framework v5.0 dll依赖于您要定位的.NET CLR。如果您的项目设置为使用.NET 4.0框架,则EntityFramework.dll的运行时版本将为4.4.0.0。
如果您使用的实体框架的CLR目标为.NET 4.5,则EntityFramework.dll的版本将为5.0。
当您通过nuget添加EntityFramework时,它将查看项目的CLR目标运行时并添加相应的EntityFramework.dll引用。如果以后更改目标,则应通过nuget卸载并重新安装EntityFramework引用,以确保项目引用了正确的运行时版本。
朱莉·勒曼(Julie Lerman)关于这个话题的