我正在尝试从EF 4.3.1升级到EF 5,并且还要从.Net 4升级到.Net 4.5。这是一个给我带来麻烦的课程的例子:
using System.ComponentModel.DataAnnotations;
public class MyClass
{
[Key, Column(Order = 0)]
public int CompositeKey1Id { get; set; }
[Key, Column(Order = 1)]
public int CompositeKey2Id { get; set; }
}
首先我收到错误Cannot resolve symbol 'Column'
。
所以我添加
using System.ComponentModel.DataAnnotations.Schema;
,因为ColumnAttribute移动到Schema名称空间。现在我收到Ambiguous reference
错误,因为EntityFramework.dll和System.ComponentModel.DataAnnotations.dll中都存在ColumnAttribute。
所以我尝试删除System.ComponentModel.DataAnnotations.dll作为参考,现在我得到Cannot resolve symbol 'Key'
,因为KeyAttribute在该dll中,但不在EntityFramework.dll中。
除非在EF5中不再需要KeyAttribute,否则我必须降级到.Net 4才能编译此代码。这不可能是对的,是吗?我在这里缺少什么?
答案 0 :(得分:7)
您需要卸载EF,然后将项目重新定位到4.5然后安装EF。如果您首先重新安装EF,最终将使用EF5 for .NET Framework 4(程序集版本4.4.0.0),其中包含数据注释,因为它们不在.NET Framework 4中,而数据注释来自System.Data.ComponentModel.DataAnnotations。 dll数据注释在.NET Framework 4.5中移动到的位置。在.NET Framework 4.5上,您希望使用EF5 for .NET Framework 4.5(程序集版本5.0.0.0),这应该可以解决问题。如果您已经重新定位项目,只需卸载并重新安装EF。