如何讓EF Core數據庫首次使用枚舉?

c# entity-framework-core

我正在使用EF Core和數據庫優先方法,使用“Scaffold-DbContext”命令生成我的DbContext / Entities。

我怎樣才能指導腳手架的DbContext,在某個中的某個字段應該生成代碼,使用枚舉,而不是僅僅一個int?

以下是您在常規EF中的使用方法: https//www.devu.com/cs-asp/lesson-69-mapping-enum-types-entity-properties-framework-designer/

此枚舉已在代碼中定義:

public enum StateEnum {
  Ok = 1,
  Fail = 2
}

這就是Scaffold-DbContext給我的

public partial class Foo
{
    public int Id { get; set; }
    public int State { get; set; }
}

這就是我想要它創建的:

public partial class Foo
{
    public int Id { get; set; }
    public StateEnum State { get; set; }
}

一般承認的答案

從Entity Framework Core 2.1開始 ,EF支持Value Conversions以專門解決需要將屬性映射到不同類型以進行存儲的方案。

特別是對於Enums,您可以使用提供的EnumToStringConverterEnumToNumberConverter


熱門答案

EF Core 2.1中的值轉換是否符合您的需求?

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

快速示例:

  entity.Property(e => e.MyEnumField)
            .HasMaxLength(50)
            .HasConversion(
                v => v.ToString(),
                v => (MyEnum)Enum.Parse(typeof(MyEnum),v))
                .IsUnicode(false);


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow