1

我们的一台开发机器给出了一个错误,说DbContext没有实现IDisposable。根据类似的 SO 帖子,这是因为我们没有引用 EF 5。问题程序集有一个*.edmx使用较旧的 EF 4 构造 ( ObjectContext) 构建的文件。同样的程序集还有一个新添加*.edmx的文件,其中包含较新的构造 ( DbContext)。

不同机器上的不同项目也可以使用DbContext并且工作正常。所述项目显示以下信息EntityFramework.dll

version:  4.4.0.0
Runtime Version:  v4.0.30319

我检查了错误的构建机器,它也有相同版本的EntityFramework.dll.

微软在开发和营销版本命名约定之间存在令人困惑的冲突。那么EF 5是否意味着dll版本应该是5.0?

换句话说,我是在好的构建机器上运行 v4.0 吗?如果是这样,为什么构建成功?

4

1 回答 1

6

Entity Framework v5.0 dll 取决于您所针对的 .NET CLR。如果您的项目设置为使用 .NET 4.0 框架,则 EntityFramework.dll 的运行时版本将为 4.4.0.0。

如果您使用的 Entity Framework 的 CLR 目标为 .NET 4.5,则 EntityFramework.dll 的版本将为 5.0。

当您通过 nuget 添加 EntityFramework 时,它将查看您项目的 CLR 目标运行时并添加适当的 EntityFramework.dll 引用。如果您稍后更改目标,则应通过 nuget 卸载并重新安装 EntityFramework 引用,以确保您的项目引用了正确版本的运行时。

Julie Lerman 关于该主题的参考文章

于 2013-08-08T16:22:05.240 回答