9

所以,我有一堂课如下:

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

    }
}

但是当我运行代码时,我收到以下错误:

属性“类型”不是类型“消息”的声明属性。使用 Ignore 方法或 NotMappedAttribute 数据注释验证该属性是否已从模型中显式排除。确保它是有效的原始属性。

我知道我收到了错误,因为 Type 属性不是原语,而是枚举。但是,如果我理解正确,EF5 支持枚举(并且我的目标是 .NET 4.5 框架),所以我认为我在映射中遗漏了一些没有解释如何转换为枚举的内容,但我不知所措至于那是什么。如果我将字段改回 int 一切正常,只有当字段类型是枚举时,我才会收到错误。

我错过了什么?提前致谢。

4

1 回答 1

17

所以事实证明我只是愚蠢并且在 POCO 类中声明了我的枚举块并且完全没有注意到它。多亏了@overmachine 的忍者评论(后来消失了),我意识到了这一点,并且将声明移出我的班级导致一切再次正常工作。感恩去他,所到之处,吸取教训要更用心感叹

于 2013-03-22T21:00:17.350 回答