EF7支持枚舉嗎?

entity-framework entity-framework-core

我有EF7 RC1的問題。我無法在模型中使用枚舉。我可以保存枚舉屬性。該值將轉換為int。我的問題是在數據讀取期間我得到了無效的強制轉換異常。

  1. EF7是否支持枚舉屬性?
  2. 如何使用流暢的api配置它?

謝謝

編輯:

枚舉:

  public enum LimitMode 
    {
        Max,
        Min,
        MaxAndMin,
    }

模型:

  public class SomeModel 
    {
    (..)
    public LimitMode LimitMode {get; set;}
    }

SomeModel的ModelBuilder:

        modelBuilder.Entity<SomeModel>(entity => {
            (...)
            entity.Property(p => p.LimitMode);
        })

熱門答案

EntityFrameworkCore 2.1現在支持值轉換器。這允許您將Enums視為數據庫中的字符串,並將它們正確轉換為模型中的枚舉。

您可以使用值轉換器執行此操作。您可以創建自己的,但EF Core 2.1附帶了一些開箱即用的預定義值轉換器。其中之一是EnumToString值轉換器。

所以給出以下內容:

public class Rider
{
    public int Id { get; set; }
    public EquineBeast Mount { get; set; }
}

public enum EquineBeast
{
    Donkey,
    Mule,
    Horse,
    Unicorn
}

使用默認轉換器,如下所示:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder
        .Entity<Rider>()
        .Property(e => e.Mount)
        .HasConversion<string>();
}

或者如果您更喜歡在模型類上使用這樣的屬性:

public class Rider
{
    public int Id { get; set; }

    [Column(TypeName = "nvarchar(24)")]
    public EquineBeast Mount { get; set; }
}


許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因