枚举与EF代码优先 – 标准方法播种数据库,然后使用?

是否有一个标准的方法来使用EF代码优先枚举? 似乎有一些例子使用包装类的枚举。

但是,我想能够定义枚举,并使用数据库初始值设定项将枚举值也播种到数据库中。 在定义枚举和创build一个包装器方面似乎没有太多的意义,如果我必须从枚举中手动枚举数据库表。

现在支持: http : //blogs.msdn.com/b/adonet/archive/2011/06/30/announcing-the-microsoft-entity-framework-june-2011-ctp.aspx

Microsoft Entity Framework 2011年6月CTP引入了新的运行时和devise时function。 以下是一些新的运行时function:

  • Enum数据types现在在entity framework中可用。 您可以使用Visual Studio中的Entity Designer来为具有Enum属性的实体build模,也可以使用Code First工作stream来定义具有Enum对象作为属性的实体。 您可以像使用其他标量属性一样使用Enum属性,例如在LINQ查询和更新中。

Visual Studio中的entity frameworkdevise器有几个新function:

  • 现在,实体devise器支持从devise器表面创build枚举,空间数据types和表值函数

不幸的是,EF 4.1本身不支持enums 。 这里有一个相当有名的文章,介绍如何处理它们: 在EF 4上伪造枚举 。 但是,它确实需要一个包装。

有一个更简单的方法来在EF 4中映射枚举:只需在您的类上创build一个int属性来表示枚举的int值。 这是EF应该映射的属性,然后有一个“迷你包装”属性允许您使用枚举。

 public class Appointment { public int ID { get; set; } public string Description { get; set; } // This property will be mapped public int DayOfWeekValue { get; set; } public DayOfWeek Day { get { return (DayOfWeek) DayOfWeekValue; } set { DayOfWeekValue = (int) value; } } } public enum DayOfWeek { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } 

在生成数据库时,EF会高兴地忽略任何不知道如何映射的types,但是int属性将被映射。

注意:这是从我对另一个enumEF问题的答案中直接获取的: EF 4.1 Code First – 枚举枚举types映射为复杂types

我写了一篇文章。 您可以使用Code First Migrations将枚举值添加到数据库。 看这里: http : //linqto.net/blog/2012/10/entity-framework-code-first-and-enum-support/