2013-03-21 2 views
9

Also, ich eine Klasse wie folgt:Karte ein Feld zu einem Enum in EntityFramework 5-Code Erste

public class Message { 

     public enum MessageType { 
      Text = 0, 
      Audio = 1, 
      Image = 2 
     } 

     public int Uid { get; set; } 
     public MessageType Type { get; set; } 
     public String Text { get; set; } 

} 

Wie Sie sehen können, das Feld Typ eine Enumeration ist. Meine Zuordnung der Daten zu dieser Klasse zusammenpassen wird wie folgt definiert:

public class MessagesMap : EntityTypeConfiguration<Message> { 

    public MessagesMap() { 

     // Primary Key 
     this.HasKey(t => t.Uid); 

     // Properties 
     this.Property(t => t.Text) 
      .HasMaxLength(1000); 

     // Table & Column Mappings 
     this.ToTable("wc_messages"); 
     this.Property(t => t.Uid).HasColumnName("UID"); 
     this.Property(t => t.Type).HasColumnName("Type"); 
     this.Property(t => t.Text).HasColumnName("Text"); 

    } 
} 

Aber wenn ich den Code ausführen, bekomme ich folgende Fehlermeldung:

The property 'Type' is not a declared property on type 'Message'. Verify that the property has not been explicitly excluded from the model by using the Ignore method or NotMappedAttribute data annotation. Make sure that it is a valid primitive property.

Ich verstehe ich erhalte den Fehler da die Type-Eigenschaft kein primitives, sondern eine enum ist. Wenn ich das richtig verstehe, unterstützt EF5 enums (und ich ziele auf das .NET 4.5-Framework ab), also nehme ich an, dass etwas in meinem Mapping fehlt, das nicht erklärt, wie man in das Enum konvertiert, aber ich bin ratlos was das ist. Wenn ich das Feld zurück zu einem int ändere, funktioniert alles gut, nur wenn der Feldtyp die enum ist, bekomme ich den Fehler.

Was fehlt mir? Danke im Voraus.

+0

@overmachine Und lo ... es funktioniert alles jetzt! Wow, Stunden damit verbracht, ohne es zu merken. Vielen Dank. Möchtest du das als Antwort posten? – BinarySolo

Antwort

18

So stellt sich heraus, ich bin nur dumm und hatte meinen Enum-Block innerhalb der POCO-Klasse deklariert und komplett versäumt, es zu bemerken. Ich erkannte es dank eines Ninja-Kommentars von @overmachine (der daraufhin verschwand) und das Verschieben der Deklaration aus meiner Klasse verursachte, dass alles wieder gut funktionierte. Dank geht zu ihm, wohin er ging, und die Lektion gelernt, aufmerksamer sein Seufzer

+5

Sie sind nicht der einzige. Danke für die Antwort – Andiih