如何升级Entity Framework 5 Code First的DataAnnotations

时间:2013-09-12 22:05:38

标签: c# .net entity-framework ef-code-first entity-framework-5

我正在尝试从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才能编译此代码。这不可能是对的,是吗?我在这里缺少什么?

1 个答案:

答案 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。