如何在 EF 代码第 6 版的上下文中保存枚举

How can i save an enum in my context in EF code first version 6

嗨,我需要在我的上下文中保存一个枚举,我试过这个:

  public class Context : DbContext
  {
      public Context() : base("name=Context"){}

      MyEnum MyEnum  { get; set; }
      public DbSet<Object1> Objects{ get; set; }

}

,当我修改 MyEnum 时它改变了它的值,但是在我想使用它时保存更改后又回到值 0 的枚举。这是我的修改代码:

 MyEnum example = MyEnum.Value1;
 using (var ctx = new Context())
        {
            ctx.CriterioPlanificacion = example;
            ctx.SaveChanges();
        }

Enum 默认类型是 int。值为 0 是正常的,因为它是第一个元素。如果你想为你的元素添加描述,你可以使用 description 属性并检索它,如图 here.

所以我发现了我做的这个老问题,所以我测试了一下。 将枚举添加到 DbContext 后的迁移是空的,因此 EF 不会将整数保存在 DbContext 中。

Microsoft 文档建议仅使用 DbSet,它仅公开其中包含 TEntities 集合的 DbSet

在我的例子中,问题是枚举字段有 属性 "StoreGeneratedPattern",值 = "Computed"。更改为 'None' 后 - 一切开始正常工作。