Fluent NHibernate と自動マッピングで c# を使用しています。
ここにいくつかのコードがあります (わかりやすくするために切り捨てられています)。次に、問題を説明します。
public class Company
{
public virtual string Description { get; set; }
}
public class Stock
{
public virtual Product Product { get; set; }
public virtual Company Company { get; set; }
}
マッピング
mappings.Conventions.Add<CascadeConvention>()
.Conventions.Add<CustomForeignKeyConvention>()
.Conventions.Add<HasManyConvention>()
.Conventions.Add<VersionConvention>()
CascadeConventionすべてを All に設定するだけです。CustomForeignKeyConventionNHibernate が通常外部キー ID 列に追加する _id を削除します。HasManyConventionすべてHasManyの を逆に設定します。VersionConvention変換は次のようになります。instance.Column("バージョン");
インスタンス。デフォルト(1);
問題は、新しい株式レコードを挿入すると、Nhibernate が関連のバージョン番号も更新することCompanyです。IList<Stock>にプロパティがあれば、Companyそれは理にかなっていますが、そうではありません。
私はたくさんの読書をしました:
- リレーションの適切な逆 (流暢な nhibernate) 設定に関係なく、無関係な更新ステートメントを発行する NHibernate
- NHibernate とバージョン列での保存と更新のカスケード
- NHibernate リファレンス - 第 17 章 例: 親/子
- Ayende @ Rahien - NHibernate マッピング
これらから、あちこちに追加するなど、たくさんのことを試しました.Not.OptimisticLock()。、などとして具体的に設定できるように、IList<Stock>プロパティを追加しました。何も違いはないようです。CompanyInverseNot.OptimisticLock