2016-02-09 11 views
6

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.EF7 supporta l'enumerazione?

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

Grazie

EDIT:

enum:

public enum LimitMode 
    { 
     Max, 
     Min, 
     MaxAndMin, 
    } 

Modello:

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

ModelBuilder per SomeModel:

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

Prova esplicitamente dicendo che l'enum è un int 'public enum LimitMode: int' e dare ai membri del enum un valore (' Max = 0, ... ') –

+0

Ho provato questo. Sfortunatamente non funziona. Ottiene ancora un'eccezione cast non valida:/ – panJapa

+0

Strana, in EF6 funziona perfettamente. EF7 non è ancora completamente rilasciato, quindi potrebbe ancora essere un bug, oppure nel database ci sono valori che non sono collegati a nessuna delle tue enumerazioni. Se i valori dell'enumerazione sono 1-3 e ne sono memorizzati 4 nel database, suppongo che otterresti quell'errore. –

risposta

2

Questo ha funzionato per me. Sto usando "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final" in project.json. Ho dovuto eseguire l'aggiornamento del database delle migrazioni di ef come parte del push del modello.

public class Person 
{ 
    public int PersonId { get; set; } 
    public string LastName { get; set; } 
    public string FirstName { get; set; } 
    public int PersonTypeId { get; set; } 
    public PersonType PersonType { get; set; } 
    public ActiveType ActiveType { get; set; } 
} 

public enum ActiveType 
{ 
    Active = 0, 
    Inactive = 1 
} 
+0

Che aspetto aveva lo schema dopo la migrazione con enum? Chiedo perché le migrazioni non funzionano in alcun modo con MySQL in questo momento, quindi ho bisogno di creare gli schemi a mano. –

+0

Sarà impostato come colonna int –