如何在 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' 后 - 一切开始正常工作。
嗨,我需要在我的上下文中保存一个枚举,我试过这个:
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' 后 - 一切开始正常工作。