Fluent NHibernate を使用してファイルの読み取りと書き込みを行っています。現時点では、親子関係があり、マッピングはによって定義されています
public class ParentMappings: ClassMap<Parent>
{
public ParentMappings()
{
Table("Parent");
Id(x => x.Id).Column("Parent_Id");
...
HasMany(x => x.Children)
.Not.KeyNullable()
.Not.Inverse()
.KeyColumn("Parent_Id")
.Cascade.All();
...
}
}
と
public class ChildMappings : ClassMap<Child>
{
public ChildMappings()
{
Table("Child");
Id(x => x.Id).Column("Child_Id");
Map(x => x.ParentId).Column("Parent_Id");
...
}
}
これが問題です。速度を維持するために、ステートレス セッションで親/子テーブルに書き込めるようにしたいだけでなく、ステートフル セッションでテーブルから読み込んで、Children コレクションが正しく読み込まれるようにしたいと考えています。ただし、この 2 つのアプローチには互換性がないようです。への呼び出しHasMany()
は、統計なしの書き込みを中断します。それを削除すると、ステートフル読み取りが中断されます。
より広い文脈では、ステートフル セッションを使用してデータベースに書き込みたい場合もあります。ただし、その場合、Map(x => x.ParentId).Column("Parent_Id")
ステートメントを含めると、ステートフルな書き込みが中断されます。
ステートフル セッションとステートレス セッションで異なるマッピングを使用する必要があるようです。ただし、私は NHibernate を初めて使用するので、現時点では明確な方法がわかりません。誰でもこれを行う方法、または同等の回避策を提案できますか?