识别实体框架的版本

时间:2013-08-08 16:14:56

标签: c# entity-framework entity-framework-5

我们的一台开发机器发出错误消息称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?如果是这样,为什么构建成功?

1 个答案:

答案 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)关于这个话题的

Reference post