所以,我有一个课程如下:
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; }
}
如您所见,Type字段是一个枚举。将数据匹配到该类的映射如下所示:
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");
}
}
但是,当我运行代码时,我会得到以下错误:
属性“type”不是“Message”类型上声明的属性。使用忽略方法或NotMappedAttribute数据注释验证该属性未显式排除在模型中。确保它是有效的原语属性。
我知道我得到了错误,因为Type属性不是一个原语,而是一个枚举。但是,如果我正确理解,EF5支持枚举(并且我针对的是.NET 4.5框架),所以我假设我在映射中遗漏了一些东西,它没有解释如何转换到枚举,但我不知道这是什么。如果我将字段改为int --这一切都很好,只有当字段类型为enum时,我才会得到错误。
我遗漏了什么?提前谢谢。
发布于 2013-03-22 13:00:17
原来我很笨,在POCO类中声明了我的enum块,但是完全没有注意到它。我意识到这一点,多亏了@overmachine的一句忍者的评论(这句话后来消失了),并且把声明移出了我的课堂,一切又恢复了正常。无论他走到哪里,都要感谢他,教训他要更加专心地叹息。
https://stackoverflow.com/questions/15548569
复制相似问题