2013-03-21 8 views
9

Quindi, ho una classe come segue:Mappa un campo per un enum in EntityFramework 5 Codice Prima

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; } 

} 

Come si può vedere, il campo Tipo è un enum. La mia mappatura di abbinare i dati per questa classe è definita in questo modo:

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"); 

    } 
} 

Ma quando si esegue il codice, ottengo il seguente errore:

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.

Capisco che sto ottenendo l'errore come la proprietà Type non è un primitivo, ma un enum. Se capisco correttamente, EF5 supporta l'enumerazione (e sto prendendo di mira il framework .NET 4.5) quindi presumo che mi manchi qualcosa nella mia mappatura che non spiega come convertire l'enum, ma sono in perdita per quello che è. Se cambio il campo di nuovo in un int funziona tutto bene, è solo quando il tipo di campo è l'enum che ottengo l'errore.

Cosa mi manca? Grazie in anticipo.

+0

@overmachine E lo ... tutto funziona ora! Wow, le ore passate su questo senza accorgersene. Grazie mille. Vuoi postarlo come risposta? – BinarySolo

risposta

18

Quindi risulta che sono semplicemente stupido e che il mio blocco enum è stato dichiarato all'interno della classe POCO e non sono riuscito a notarlo. L'ho capito grazie a un commento di ninja di @overmachine (che successivamente è scomparso) e spostare la dichiarazione dalla mia classe ha fatto sì che tutto funzionasse di nuovo bene. Grazie a lui, ovunque andasse, e lezione imparato ad essere più attento sigh

+5

Non sei l'unico. Grazie per la risposta – Andiih

Problemi correlati