C# EntityFramework 和 System.ComponentModel.DataAnnotations 中都存在类型“ForeignKeyAttribute”

M H*_*oca 0 c# .net-framework-version entity-framework-6

我将项目从 .net 4.0 升级到 .net 4.5.1。

我将 EntityFramework 从 4.3.1 升级到 6.1.3。

但是 EntityFramework 基于 .net 4.0 (\packages\EntityFramework.6.1.3\lib\net40\EntityFramework) 因为另一个依赖项目运行 .net 4.0。

当我构建时,我收到此错误:

类型 'ForeignKeyAttribute' 存在于 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 和 'System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf34e35ad'

提前致谢。

gre*_*ian 5

仅仅DataAnnotations 4.0.0从项目中删除引用可能还不够。即使您的packages.config 中对Entity Framework 的引用可能会更新为正确的版本,但targetFramework 值可能仍会影响代码的编译方式。

我正在升级最初针对 Framework 4.0 的 ASP.NET MVC 3 应用程序。我首先升级了 NuGet 包,其中包括 EntityFramework 4.x。后来我了解到我需要一个更新的 .NET Framework 版本。在选择将每个项目升级到 .NET Framework 4.7.1 后,我开始遇到 CS0433错误。升级 NuGet 包升级Framework 版本似乎使 targetFramework 保持不变。

为了解决这个问题,我用新的 targetFramework 值手动更新了每个项目的 packages.config 文件,从net40net471。为了使这些更新的值生效,我从 NuGet 包管理器控制台运行了Update-Package -reinstall. 现在使用DataAnnotations“EntityFramework 6.2.0”中包含的内容,而不是 4.0.0 中的外部可用内容。