如何使EFCodeFirst为类型为enum的属性生成int类型的列?

时间:2011-02-14 02:28:56

标签: asp.net-mvc entity-framework-4

我的模型如下:

namespace MvcApplication1.Models
{
    public enum Sex { Male, Female }
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }

        [Required(ErrorMessage = "Please select either Female or Male.")]
        public Sex? Sex { get; set; }
    }
}

我使用EFCodeFirst成功生成了一个数据库。不幸的是,在数据库中只创建了IdName列,并且没有生成Sex列。

如何使EFCodeFirst为类型为enum的属性生成int类型的列?

2 个答案:

答案 0 :(得分:2)

从EF CTP5开始,仍然不支持枚举。这是EF团队正在努力的事情,我们很可能会在RTM上获得它。目前,您必须使用int? Sex属性。

从模型创建数据库时,EF Code First将忽略任何非基本类型的属性。

答案 1 :(得分:1)

您可以使用以下简单的解决方法:

http://daniel.wertheim.se/2010/06/09/dealing-with-enumerations-and-entity-framework-4-code-first/

..但是一旦EF支持枚举,你可能需要做一些重构。