0

Entity Frameworkのシリアル化可能なクラス(EFコードファースト)を定義するには、パブリック仮想プロパティをデータホルダーとして使用する必要があります。これは、後でDBの列として使用されます。これにより、開発者は、コンストラクターからエンティティのインスタンスを初期化することができなくなります。エンティティをデータの「バケット」にするだけでなく、新しいオブジェクトのコンストラクターのインスタンス化や、オブジェクト内のデータ操作のメソッドなどの動作も持たせたいです。

想定できる方法ですが、コンストラクターの制限を克服するにはどうすればよいですか?プロパティごとにエンティティをインスタンス化し、代わりに使用するラッパークラスを導入する必要がありますか?

4

1 に答える 1

1

「必要に応じて」メソッドを使用することも、データベースにマップされないセッターのないプロパティを使用することもできます。NotMappedAttributeまたは、...がマップされないプロパティ。

注:遅延読み込みでは、ナビゲーションプロパティ(参照とコレクション)のみを仮想化する必要があります。プリミティブではありません。これはNHnibernateの要件だと思います。

コンストラクターの場合、パラメーター化されたコンストラクターを必要な数だけ追加できます。パラメーターのないコンストラクターも必要です。

ちなみに、オブジェクト初期化子も使用できます。

var test = new Test {
                Name = bla,
                Code = 2
                };
于 2012-07-12T08:52:21.960 に答える