maxlength属性在EF4.3.1(MaxLength Attribute in EF4.3.1

2019-06-24 08:44发布

 The type 'System.ComponentModel.DataAnnotations.MaxLengthAttribute' 
 exists in both 

 [path...]\packages\EntityFramework.4.3.1\lib\net40\EntityFramework.dll 

 and

'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework
\.NETFramework\v4.5\System.ComponentModel.DataAnnotations.dll'  

现在,我已阅读MSDN上 ,其安全地排除的EntityFramework引用(这是通过NuGet包添加)。 然而,当我这样做,我不能正确地创建一个的DbContext作为DbModelBuilder类家住的EntityFramework DLL。 此外,当我删除的EntityFramework REFFERENCE所以这是旧的,不相关的解决方案,现在一些其他重要的类人失踪。

更新(消歧):两个System.ComponentModel.DataAnnotations.dllEntityFramework.dll包括System.ComponentModel.DataAnnotations.MaxLengthAttribute 。 的问题是,每个DLL还包括其它类是EF代码优先的设计是至关重要的。 例如:

EntityFramework.dll:
 - System.Data.Entity.DbModelBuilder

System.ComponentModel.DataAnnotations.dll:
 - System.ComponentModel.DataAnnotations.RegularExpressionAttribute

Answer 1:

加入本声明顶部类的

 using System.ComponentModel.DataAnnotations;

System.ComponentModel.DataAnnotations命名空间跨越distibuted EntityFramework.dllSystem.ComponontModel.DataAnnotations.dll 。 所以,你需要参考您的项目中利用DataAnnotations的同时添加到这一点。

所述MaxLenth属性存在于EntityFramework.dll 。 因此,请确保你在你的项目引用部分,其参考的是目前的dll。

编辑:作为.NET框架4.5,这个命名空间移动到System.ComponentModel.DataAnnotations.dll 。 所以,如果你使用的.NET Framework 4.5与实体框架4.3.1或更少,您将在运行到这个冲突。 解决的办法是,如果你想继续使用.NET 4.5或降级到.NET 4中使用的EntityFramework 4.3.1切换到实体框架1.50的β/ 2版本。

从MSDN单证。

与实体框架5.0 Beta 1版本开始,EntityFramework.dll不包含数据注解的定义。 这些定义被转移到System.ComponentModel.DataAnnotations.dll并在System.ComponentModel.DataAnnotations.Schema命名空间中定义。



Answer 2:

我没有升级项目中使用EF5,或降级构建机器.Net框架4的选项。

还有就是要解决这个问题,虽然办法! 事实证明,当你安装Visual Studio 2012它增加了以下文件夹(其中包括)。

C:\ Program Files文件\参考大会\微软\框架\ .NETFramework \ V4.0

在VS,如果你打开一个项目靶向4.0,看看你的参考,以System.ComponentModel.DataAnnotations属性,你会看到路径指着上面的位置,而不是GAC。

此文件夹包含原始框架4.0的组件。 如果现在他们的机器,那么MSBuild的等,在建设项目目标4.0将参考这些,而不是修改那些4.5付诸GAC中。

在我们的情况下,这意味着我们可以通过从dev的机器复制该文件夹与VS安装达在同一个位置我们构建服务器解决问题。 (注:我们只需要这个文件夹复制,没有必要到构建服务器上安装VS)。

更多资讯: http://marcgravell.blogspot.co.uk/2012/09/iterator-blocks-missing-methods-and-net.html

希望这可以帮助别人!



文章来源: MaxLength Attribute in EF4.3.1