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

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

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

3 Solutions collect form web for “枚举与EF代码优先 – 标准方法播种数据库,然后使用?”

现在支持: 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/

  • entity framework:查询子实体
  • 如何在Entity Framework Code First中分离对象?
  • EF 4.1代码优先的复合钥匙
  • entity framework代码 - 第一个空外键
  • 首先使用EF代码的唯一键
  • 该关系不能改变,因为一个或多个外键属性是不可空的
  • 保存不会为其关系公开外键属性的实体时发生错误
  • 在组织方面,当我使用entity framework代码时,我应该在哪里进行常见的查询?
  • 我应该启用还是禁用dynamic代理与entity framework4.1和MVC3?
  • entity framework数据库中的代码优先默认数据
  • Code First - Data Annotations还是Fluent API更好?