2016-02-09 8 views
6

Ich habe ein Problem mit EF7 RC1. Ich kann nicht mit Enums in meinem Modell arbeiten. Ich kann Enum-Eigenschaft speichern. Der Wert wird an int übergeben. Mein Problem ist, dass ich beim Lesen von Daten eine ungültige Cast-Ausnahme bekomme.Unterstützt EF7 enums?

  1. Unterstützt EF7 enum-Eigenschaften?
  2. Wie kann ich es mit flüssiger API konfigurieren?

Dank

EDIT:

Enum:

public enum LimitMode 
    { 
     Max, 
     Min, 
     MaxAndMin, 
    } 

Modell:

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

Modelbuilder für SomeModel:

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

Versuchen explizit sagen, die ENUM ist ein int 'public enum LimitMode: int' und geben den Mitgliedern des ENUM-Wert (' Max = 0, ...) ' –

+0

ich dies versucht haben. Geht leider nicht. Immer noch ungültige Cast-Ausnahme:/ – panJapa

+0

Seltsam, in EF6 funktioniert es perfekt. EF7 ist noch nicht vollständig freigegeben, so dass es sich immer noch um einen Fehler handeln kann oder Sie Werte in Ihrer Datenbank haben, die nicht mit einem Ihrer Enums verbunden sind. Wenn Ihre Enum-Werte 1-3 sind und 4 in Ihrer Datenbank gespeichert sind, nehme ich an, dass Sie diesen Fehler erhalten würden. –

Antwort

2

Das funktionierte für mich. Ich verwende "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final" in project.json. Ich musste ef migrations Datenbankaktualisierung als Teil des Schiebens des Modells laufen lassen.

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

Wie sah das Schema nach der Migration mit der Enumeration aus? Ich frage, weil Migrationen gerade nicht mit MySQL funktionieren, also muss ich die Schemata von Hand erstellen. –

+0

Es wird als int-Spalte eingerichtet –