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

C# 如何在EF代码第一版6中的上下文中保存枚举,c#,enums,ef-code-first,entity-framework-6,C#,Enums,Ef Code First,Entity Framework 6,嗨,我需要在我的上下文中保存一个枚举,我尝试了以下方法: public class Context : DbContext { public Context() : base("name=Context"){} MyEnum MyEnum { get; set; } public DbSet<Object1> Objects{ get; set; } } 枚举默认类型为int。值为0是正常的,因为它是第一个元素。如果要为元素添加描述

嗨,我需要在我的上下文中保存一个枚举,我尝试了以下方法:

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

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

}

枚举默认类型为int。值为0是正常的,因为它是第一个元素。如果要为元素添加描述,可以使用description属性并检索它,如图所示。

枚举默认类型为int。值为0是正常的,因为它是第一个元素。如果您想对元素进行描述,可以使用description属性并检索它,如图所示。

所以我找到了我提出的这个老问题,所以我测试了它。 将枚举添加到DbContext后的迁移为空,因此EF不会将INT保存在DbContext中


Microsoft文档建议只使用只公开包含tenties集合的dbset的dbset

所以我发现了我提出的这个老问题,所以我测试了它。 将枚举添加到DbContext后的迁移为空,因此EF不会将INT保存在DbContext中


Microsoft文档建议只使用仅公开其中包含tenties集合的dbset的dbset。在我的示例中,问题在于Enum字段具有value=“Computed”的属性“StoreGeneratedPattern”。更改为“无”后,一切都正常工作。

在我的例子中,问题是枚举字段的属性“StoreGeneratedPattern”的值为value=“Computed”。更改为“无”后,一切都正常运行。

在数据库和内存中,枚举以int形式保存,我知道,但我的问题是conext方法SaveChanges()没有更改数据库中的数据库,而在内存中,枚举以int形式保存,但我的问题是conext方法SaveChanges()我知道,在数据库和内存中,枚举是以int的形式保存的,但我的问题是conext方法SaveChanges()没有更改我的数据库生成了什么SQL?正在生成什么SQL?正在生成什么SQL?如果您有问题,请使用提问或为用户提供好的解决方案如果您有问题,请使用提问或为用户提供好的解决方案如果您有问题,请使用提问或为用户提供好的解决方案
 MyEnum example = MyEnum.Value1;
 using (var ctx = new Context())
        {
            ctx.CriterioPlanificacion = example;
            ctx.SaveChanges();
        }