Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确定实体框架的版本_C#_Entity Framework_Entity Framework 5 - Fatal编程技术网

C# 确定实体框架的版本

C# 确定实体框架的版本,c#,entity-framework,entity-framework-5,C#,Entity Framework,Entity Framework 5,我们的一台开发机器出现错误,指出DbContext没有实现IDisposable。根据a,这是因为我们没有引用EF 5。问题程序集有一个*.edmx文件,该文件是用较旧的EF 4构造(ObjectContext)生成的。这个程序集还有一个新添加的*.edmx文件,其中包含较新的构造(DbContext) 不同机器上的不同项目也使用DbContext,工作正常。所述项目显示了EntityFramework.dll的以下信息: version: 4.4.0.0 Runtime Version:

我们的一台开发机器出现错误,指出
DbContext
没有实现
IDisposable
。根据a,这是因为我们没有引用EF 5。问题程序集有一个
*.edmx
文件,该文件是用较旧的EF 4构造(
ObjectContext
)生成的。这个程序集还有一个新添加的
*.edmx
文件,其中包含较新的构造(
DbContext

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

version:  4.4.0.0
Runtime Version:  v4.0.30319
我检查了错误的构建机器,它也有相同版本的
EntityFramework.dll

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


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

Entity Framework v5.0 dll依赖于目标.NET CLR。如果项目设置为使用.NET 4.0 framework,则EntityFramework.dll的运行时版本将为4.4.0.0

如果使用的实体框架的CLR目标为.NET 4.5,则EntityFramework.dll的版本将为5.0

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


Julie Lerman关于该主题的介绍。

实体框架v5.0 dll依赖于目标.NET CLR。如果项目设置为使用.NET 4.0 framework,则EntityFramework.dll的运行时版本将为4.4.0.0

如果使用的实体框架的CLR目标为.NET 4.5,则EntityFramework.dll的版本将为5.0

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


Julie Lerman关于该主题的文章。

EF 4.4=EF 5在.NET 4.0上。EF 5.0=.NET 4.5上的EF 5。令人困惑是的,但这是微软市场营销工作的重点:-),更让人困惑的是:EF 5的某些功能只有在您将.NET 4.5(但不是在.NET 4.0上)作为目标时才会起作用。EF 4.4=EF 5在.NET 4.0上。EF 5.0=.NET 4.5上的EF 5。令人困惑是的-但这是微软市场营销的一个难点:-),更让人困惑的是:EF 5的一些功能只有在你以.NET 4.5(但不是.NET 4.0)为目标的情况下才能发挥作用非常有用!如果这是真的,为什么构建失败?记住,两台机器上的运行时版本都是4.0。您是否通过nuget添加了EntityFramework?如果是这样,则在生成服务器执行get时,packages文件夹中的缓存版本可能不同步和/或不存在于版本控制中。在执行生成时,由于EF5二进制文件不存在,服务器在尝试解析引用时可能会退回到.NET 3.5中包含的EntityFramework的旧版本(不包括DbContext)。我会看一看,并确保生成服务器可以正确地解决EF的所有引用。这个项目是旧的,由其他人创建的。你的回答很有道理。我们将通过nuget重新安装。非常有用!如果这是真的,为什么构建失败?记住,两台机器上的运行时版本都是4.0。您是否通过nuget添加了EntityFramework?如果是这样,则在生成服务器执行get时,packages文件夹中的缓存版本可能不同步和/或不存在于版本控制中。在执行生成时,由于EF5二进制文件不存在,服务器在尝试解析引用时可能会退回到.NET 3.5中包含的EntityFramework的旧版本(不包括DbContext)。我会看一看,并确保生成服务器可以正确地解决EF的所有引用。这个项目是旧的,由其他人创建的。你的回答很有道理。我们将通过nuget重新安装。