枚举与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/

  • EntityFramework代码优先自定义连接string和迁移
  • 如何使用entity framework来声明一对一的关系4 Code First(POCO)
  • StringLength与MaxLength属性entity frameworkEF Code First的ASP.NET MVC
  • 使用graphdiff进行条件映射
  • EF 6和代码优先迁移中相同数据库和应用程序中的多个数据库上下文
  • EF CodeFirst:参数@objname不明确或声明的@objtype(COLUMN)错误
  • entity framework代码First Fluent Api:向列添加索引
  • 非静态方法需要一个目标。 entity framework5 Code First
  • EF代码优先 – 包含(x => x.Properties.Entity)1:多关联
  • EF模式首先或代码优先的方法?
  • 术语“更新数据库”不被识别为cmdlet的名称