EF7은 열거 형을 지원합니까?

entity-framework entity-framework-core

문제

나는 EF7 RC1에 문제가있다. 내 모델에서 enum을 사용할 수 없습니다. enum 속성을 저장할 수 있습니다. 값은 int로 변환됩니다. 내 문제는 데이터를 읽는 동안 잘못된 캐스트 예외가 발생합니다.

  1. EF7은 enum 속성을 지원합니까?
  2. 유창한 API로 어떻게 구성 할 수 있습니까?

감사

편집하다:

enum :

  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에서 값 변환기가 지원됩니다. 이렇게하면 열거 형을 데이터베이스의 문자열로 처리하고 모델에서 열거 형으로 올바르게 변환 할 수 있습니다.

값 변환기를 사용하여이 작업을 수행 할 수 있습니다. 직접 만들 수도 있지만 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는 합법적입니까? 예, 이유를 알아보십시오.