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

    }
}

しかし、コードを実行すると、次のエラーが発生します。

プロパティ 'Type' は、タイプ 'Message' で宣言されたプロパティではありません。Ignore メソッドまたは NotMappedAttribute データ注釈を使用して、プロパティがモデルから明示的に除外されていないことを確認します。有効なプリミティブ プロパティであることを確認してください。

Type プロパティはプリミティブではなく、列挙型であるため、エラーが発生していることを理解しています。ただし、正しく理解していれば、EF5 は列挙型をサポートしている (そして、.NET 4.5 フレームワークをターゲットにしている) ため、列挙型に変換する方法を説明していないマッピングに何かが欠けていると思いますが、途方に暮れていますそれが何であるかについて。フィールドを int に戻すと、すべて正常に動作します。エラーが発生するのは、フィールド タイプが列挙型の場合のみです。

私は何が欠けていますか?前もって感謝します。

4

1 に答える 1

17

したがって、私は愚かであり、列挙型ブロックが POCO クラス内で宣言されていて、それに完全に気付かなかったことがわかりました。@overmachine からの忍者のコメント (その後消えた) のおかげで気づき、クラスから宣言を移動すると、すべてが再び正常に機能するようになりました。彼がどこへ行っても彼に感謝し、教訓はより注意深くため息をつくことを学んだ

于 2013-03-22T21:00:17.350 に答える