Pregunta

Tengo un problema con EF7 RC1. No puedo trabajar con enumeraciones en mi modelo. Puedo guardar propiedad enum. El valor se convierte a int. Mi problema es que durante la lectura de datos obtengo una excepción de conversión no válida.

  1. ¿EF7 soporta las propiedades de enumeración?
  2. ¿Cómo puedo configurarlo con api fluida?

Gracias

EDITAR:

enumeración

  public enum LimitMode 
    {
        Max,
        Min,
        MaxAndMin,
    }

Modelo:

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

ModelBuilder para SomeModel:

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

Respuesta popular

Los convertidores de valor ahora son compatibles con EntityFrameworkCore 2.1. Esto le permite tratar las Enums como cadenas en su base de datos y convertirlas correctamente en Enums en su modelo.

Haces esto con un convertidor de valores. Puede crear el suyo propio, pero EF Core 2.1 viene con algunos convertidores de valor predefinidos listos para usar. Uno de estos es el convertidor de valores EnumToString.

Así que dado lo siguiente:

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

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

Utilice el convertidor por defecto de esta manera:

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

O si prefiere usar atributos en sus clases modelo como esta:

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

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué