EF7 supporta le enumerazioni?

entity-framework entity-framework-core

Domanda

Ho un problema con EF7 RC1. Non riesco a lavorare con le enumerazioni nel mio modello. Posso salvare la proprietà enum. Il valore è castato su int. Il mio problema è che durante la lettura dei dati ottengo un'eccezione cast non valida.

  1. EF7 supporta le proprietà enum?
  2. Come posso configurarlo con API fluente?

Grazie

MODIFICARE:

enum:

  public enum LimitMode 
    {
        Max,
        Min,
        MaxAndMin,
    }

Modello:

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

ModelBuilder for SomeModel:

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

Risposta popolare

I convertitori di valore sono ora supportati in EntityFrameworkCore 2.1 Ciò consente di considerare Enum come stringhe nel database e convertirle correttamente in Enum nel modello.

Lo fai con un convertitore di valori. È possibile creare il proprio ma EF Core 2.1 viene fornito con alcuni convertitori di valori predefiniti pronti per l'uso. Uno di questi è il convertitore di valori EnumToString.

Quindi dato il seguente:

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

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

Usa il convertitore di default come questo:

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

O se preferisci usare gli attributi sulle tue classi modello come questo:

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

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



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché