为什么`DatabaseGenerated(DatabaseGeneratedOption.Identity)`在MVC 4中不起作用

时间:2012-07-02 20:44:18

标签: c# entity-framework ef-code-first asp.net-mvc-migration

我试图将我的MVC 3项目转移到MVC 4但是当我想移动这个模型时:

public class Link
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid ID { get; set; }

    [DisplayName("Shorted URL")]
    public string SURL { get; set; }

    [DisplayName("General Link")]
    public string OriginalURL { get; set; }

    [DisplayName("Click Count")]
    public int ClickCount { get; set; }
}

public class LinkDBContext : DbContext
{
    public DbSet<Link> Links { get; set; }
}

我的[System.ComponentModel.DataAnnotations.(DatabaseGeneratedOption.Identity)]属性出错了。我不知道是什么问题。有谁知道?!?

更新

这些是错误:

  

类型或命名空间名称“DatabaseGeneratedAttribute”不可能   发现(您是否缺少using指令或程序集引用?)

     

无法找到类型或命名空间名称“DatabaseGenerated”(是   你错过了使用指令或程序集引用?)

3 个答案:

答案 0 :(得分:26)

DatabaseGeneratedAttribute在 .NET 4.5中的System.ComponentModel.DataAnnotations.Schema名称空间属性

答案 1 :(得分:2)

如果要在.net 4中使用此属性,可以使用Prerelease版本的EntityFramework 6(甚至Nightly Builds)在Manage NuGet Pakages窗口中从窗口顶部的下拉列表中执行此操作,选择Include Prerelease

要更新为夜间构建,请在Pakage Manager Settings中添加此包源:

http://www.myget.org/F/aspnetwebstacknightly/

有关完整指南,请参阅EF on GitHub

答案 2 :(得分:1)

在某些情况下,您需要将框架从4.5或更低版本更改为4.5.1,然后安装Entity Framework 6 +并找到它