2013-03-21 18 views
9

Vì vậy, tôi có một lớp học như sau:Bản đồ một trường để một enum trong EntityFramework 5 Mã Đầu tiên

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

} 

Như bạn có thể thấy, các trường Type là một enum. lập bản đồ của tôi để phù hợp với các dữ liệu vào lớp này được định nghĩa như thế này:

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

    } 
} 

Nhưng khi tôi chạy mã, tôi nhận được lỗi sau:

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.

Tôi hiểu rằng tôi đang nhận được lỗi vì thuộc tính Type không phải là nguyên thủy, mà là một enum. Tuy nhiên, nếu tôi hiểu chính xác, EF5 hỗ trợ enums (và tôi đang nhắm vào khung công tác .NET 4.5) vì vậy tôi cho rằng tôi thiếu một thứ gì đó trong ánh xạ của mình, không giải thích cách chuyển đổi thành enum, nhưng tôi đang thua lỗ như thế nào. Nếu tôi thay đổi lĩnh vực trở lại một int nó tất cả các công trình tốt, nó chỉ khi loại trường là enum rằng tôi nhận được lỗi.

Tôi đang thiếu gì? Cảm ơn trước.

+0

@overmachine Và lo ... tất cả đều hoạt động ngay bây giờ! Wow, hàng giờ dành cho điều đó mà không nhận thấy. Cám ơn rất nhiều. Bạn có muốn đăng câu trả lời đó không? – BinarySolo

Trả lời

18

Vì vậy, hóa ra tôi chỉ ngu ngốc và có khối enum của tôi được khai báo bên trong lớp POCO và hoàn toàn không nhận thấy nó. Tôi nhận ra điều đó nhờ một lời nhận xét của ninja từ @overmachine (sau đó biến mất) và việc chuyển tờ khai ra khỏi lớp của tôi đã khiến mọi thứ trở nên tốt đẹp trở lại. Cảm ơn anh ấy, bất cứ nơi nào anh ấy đến và bài học được chú ý hơn để chú ý hơn sigh

+5

Bạn không phải là người duy nhất. Thx cho câu trả lời – Andiih

Các vấn đề liên quan