【发布时间】:2012-03-11 06:19:52
【问题描述】:
我需要知道是否可以在 VS 2011 中使用最新版本的 EF (4.3.1) 而无需按照here 所述安装这些 CTP 组件。
我安装了这些组件,但我删除了它们,从那时起我无法将新的 edmx 文件添加到 .net 4 目标项目;它抱怨缺少对 System.Data.Entity 的引用。
我需要重新安装 VS 2011 吗?
【问题讨论】:
标签: entity-framework edmx
我需要知道是否可以在 VS 2011 中使用最新版本的 EF (4.3.1) 而无需按照here 所述安装这些 CTP 组件。
我安装了这些组件,但我删除了它们,从那时起我无法将新的 edmx 文件添加到 .net 4 目标项目;它抱怨缺少对 System.Data.Entity 的引用。
我需要重新安装 VS 2011 吗?
【问题讨论】:
标签: entity-framework edmx
删除并重新安装 Visual Studio 后,我仍然无法将错误变为红色,因此我使用进程监视器记录 Visual Studio 使用 System.Data.Entity 作为路径过滤器所做的事情,结果发现 Visual Studio 正在读取来自
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\policy.4.0.system.data.entity v4.0_0.0.0.0__b77a5c561934e089\policy.4.0.system.data.entity.config
绑定到
System.Data.Entity.dll v 4.2.0.0
一旦我清除了文件,VS 就像魅力一样工作。
CTP 卸载忽略了这一点。
【讨论】:
是的,使用 .net 4 应该没有问题,但是使用 .net 4.5 时有一个已知问题列表。您无需重新安装 vs 即可获得实体框架的 4.3.1 版本,只需从 nuget 包库安装它,如果您使用的是 .net 4,一切似乎都可以正常工作。
在 .net 4.5 上安装 EF4.3.1 时列出的问题包括下列问题。
Entity Framework 4.1 到 4.3 在 EntityFramework 程序集中的 System.ComponentModel.DataAnnotations 命名空间。 在 .NET 4.5 中,这些注释被移动到成为 .NET Framework 的一部分 System.ComponentModel.DataAnnotations.Schema 的命名空间 System.ComponentModel.DataAnnotations.dll 程序集。如果您使用的是 EF 4.x 并定位 .NET 4.5 这会导致在不同程序集中具有相同名称的两个数据注释。 因为 .NET Framework 中的注释位于不同的命名空间中,所以我们没有 能够使用类型转发来避免这种冲突。
可以在 .NET 4.5 上使用 EF 4.x,但我们建议使用最新的预发布版本 EF 5 版本。如果您不使用受影响的数据注释,则不会产生影响 在你的代码上。如果您在 C# 项目中使用数据注释,则可以使用 extern 修饰符以确保您的代码使用来自 EntityFramework.dll 的注释 (http://msdn.microsoft.com/en-us/library/e59b22c5(v=VS.80).aspx)。如果您使用新的 .NET 4.5 中 System.ComponentModel.DataAnnotations.dll 程序集的注释 Code First 不会处理它们。
受影响的注解是:
【讨论】: