首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使EF核心数据库首先使用Enum?

如何使EF核心数据库首先使用Enum?
EN

Stack Overflow用户
提问于 2017-05-30 12:28:18
回答 7查看 58.7K关注 0票数 37

我正在使用方法,使用"Scaffold- DbContext "-command来生成我的DbContext/实体。

我如何指示Scaffold,某个字段在某个中应该生成代码以使用Enum而不是int?

这是您以前在常规EF:https://www.devu.com/cs-asp/lesson-69-mapping-enum-types-entity-properties-framework-designer/中所做的工作

示例

此枚举已在代码中定义:

代码语言:javascript
运行
复制
public enum StateEnum {
  Ok = 1,
  Fail = 2
}

这就是Scaffold-DbContext给我的

代码语言:javascript
运行
复制
public partial class Foo
{
    public int Id { get; set; }
    public int State { get; set; }
}

这就是我想要它创造的东西:

代码语言:javascript
运行
复制
public partial class Foo
{
    public int Id { get; set; }
    public StateEnum State { get; set; }
}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2018-09-25 13:08:07

从Entity 2.1开始,EF支持值转换专门解决需要将属性映射到不同类型以进行存储的场景。

特别是对于Enum,可以使用提供的EnumToStringConverterEnumToNumberConverter

票数 32
EN

Stack Overflow用户

发布于 2018-06-14 14:14:42

EF Core 2.1中的值转换不满足您现在的需要吗?

https://learn.microsoft.com/en-us/ef/core/modeling/value-conversions

简单的例子:

代码语言:javascript
运行
复制
  entity.Property(e => e.MyEnumField)
            .HasMaxLength(50)
            .HasConversion(
                v => v.ToString(),
                v => (MyEnum)Enum.Parse(typeof(MyEnum),v))
                .IsUnicode(false);
票数 32
EN

Stack Overflow用户

发布于 2018-01-13 05:45:37

我来这里是因为这个题目。不确定这在"Scaffold- DbContext“中是否有效,但在DbContext (Microsoft.EntityFrameworkCore 2.0.1.0)中,它会显式地设置枚举的基本类型,即使枚举元素的默认基础类型是int。您也可以使用Fluent API来设置默认值(尤其是在这种情况下,枚举以1开头)。

代码语言:javascript
运行
复制
public enum StateEnum : int
{
    Ok = 1,
    Fail = 2
}

枚举的批准类型为:字节、字节、短、ushort、int、uint、long或ulong。

所以我认为这对任何一个来说都是可行的。枚举(C#参考)

代码语言:javascript
运行
复制
public class MyDbContext : DbContext
{      
    protected override void OnModelCreating(ModelBuilder builder) 
    {
        builder.Entity<Foo>().Property(x => x.State).HasDefaultValue(StateEnum.Ok);
    }
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44262314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档