一連の列でエンティティを定義し、マッピングを作成しました。
public class PurchaseRecord {
public virtual int? Id {
get;
set;
}
public virtual DateTime? PurchasedDate {
get;
set;
}
public virtual string Comment {
get;
set;
}
public virtual IList<PurchaseRecordExtendedProperty> ExtendedPropertyValues {
get;
set;
}
public class PurchaseRecordMap : ClassMap<PurchaseRecord> {
public PurchaseRecordMap() {
Table("PurchaseRecords");
Id(x => x.Id, "RecordID").GeneratedBy.Identity();
Map(x => x.PurchasedDate, "PurchaseDate").Not.Nullable();
Map(x => x.Comment, "Comment");
HasMany(x => x.ExtendedPropertyValues).KeyColumn("ExtendedPropertyID").Cascade.All();
}
ほとんどの場合はうまく機能しますが、特定の状況では、特定の列 (子コレクションなどExtendedPropertyValues
) の更新をスキップしたい場合があります。オブジェクトを作成するとき、PurchaseRecord
わざわざ のデータをロードすることさえしませんExtendedPropertyValues
。しかし、プロパティが null の場合、NHibernate はデータベースから子レコードを削除しようとします。
ExtendedPropertyValues
決して変更されないシナリオがあることは知っています。パフォーマンスを考慮して、必要のないデータをロードしたくありません。更新する必要がない場合、指定されたプロパティを NH に強制的にスキップさせる方法はありますか?
提案をありがとう。