将字段映射到EntityFramework 5 Code First中的枚举

Bin*_*olo 9 entity-framework-5

所以,我有一个课程如下:

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

}
Run Code Online (Sandbox Code Playgroud)

如您所见,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");

    }
}
Run Code Online (Sandbox Code Playgroud)

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

属性"Type"不是"Message"类型的声明属性.使用Ignore方法或NotMappedAttribute数据批注验证是否未从模型中显式排除该属性.确保它是有效的原始属性.

我知道我收到错误,因为Type属性不是原始属性,而是枚举.但是,如果我理解正确,EF5支持枚举(我的目标是.NET 4.5框架),所以我假设我在我的映射中遗漏了一些不能解释如何转换为枚举的东西,但我很茫然至于那是什么.如果我将字段更改回int它一切正常,只有当字段类型是我得到错误的枚举时.

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

Bin*_*olo 17

所以事实证明我只是愚蠢而且在POCO类中声明了我的枚举块并完全没有注意到它.我意识到这要归功于来自@overmachine的忍者评论(随后消失了)并将声明移出我的班级导致一切都恢复正常.要感谢他,所到之处,和经验教训,以更周到的叹息

  • 你不是唯一的一个.谢谢答案 (5认同)