在存储在数据库中的模型中使用枚举值

时间:2011-08-23 09:22:27

标签: asp.net-mvc-3 enums

我似乎没有弄清楚如何在ASP.NET MVC 3模型中使用枚举值(使用代码优先方法),以便它们存储在数据库中并保存。

我的模型代码如下:

public class TestNews
{
    public int Id { get; set; }

    [Required]
    public DateTime Date { get; set; }

    [Required]
    //[EnumDataType(typeof(TestNewsType))]?
    public TestNewsType Type { get; set; }

    [Required]
    public string Title { get; set; }
}

public enum TestNewsType : short
{
    Draft = 0,
    PublishedPublicly = 1,
    PublishedInternally = 2,
    Removed = 3
}

重新创建数据库后,它包含表TestNews,但它只包含列:

  • 编号
  • 日期
  • 标题

如何使它也将Type存储在数据库中?还应该使用EnumDataType注释吗?

我后来想在控制器动作中使用它,如:

    public ActionResult Latest(int count=5)
    {
        var model = db.TestNews
            .Where(n => n.Type == TestNewsType.PublishedPublicly)
            .OrderByDescending(n => n.Date)
            .Take(count)
            .ToList();
        return PartialView(model);
    }

1 个答案:

答案 0 :(得分:2)

June CTP of Entity Framework引入了Enum支持。

作为使用CTP的替代方法,在MSDN博客上有一篇关于how to fake enums with Entity Framework的文章。