7

intビットマスクを含むEF4エンティティ(コードファースト)があります。ビットマスクの操作を簡単にするためにビットマスク構造体を作成しました(ビットにアクセスするためのブールプロパティを提供します)。ビットマスク構造体には、intとの間で変換するためのオーバーロードされた暗黙の演算子が含まれています。

プロパティタイプをビットマスク構造体に設定しようとしましたが、値が0として返されます。データベースの値に値があり、単体テストでビットマスクが機能することがわかっています。HasColumnTypeを「I​​NT」に設定しました。

プロパティ...

[Required]
[Display(Name = "Display Pages Bitmask")]
[Column(Name = "fDisplayPagesBitmask")]
public DisplayPagesBitmask DisplayPagesBitmask { get; set; }

コンテキストオブジェクトから...

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.Entity<Website>()
        .Property(m => m.DisplayPagesBitmask)
        .HasColumnType("INT");
}

これは可能ですか?もしそうなら、それを機能させるために私は何をする必要がありますか?

4

2 に答える 2

4

構造を直接マップすることはできません。int プロパティをマップし (セッターを内部または保護する)、マップされた整数プロパティを内部的に設定するカスタム型の2 番目のマップされていないプロパティ (使用NotMappedAttributeまたはメソッド) を提供する必要があります。Ignore

于 2011-01-13T08:47:12.860 に答える