実稼働システムで断続的な問題が発生し、ローカルで再現できませんでした。発生しているように見えるのは、子エンティティの編集中に明白な理由がなく、コレクションを含む親を保存すると、子エンティティの親の関連付けがデータベースから削除されることです。子エンティティを効果的に孤立させます。
流暢なマッピングは次のとおりです。
mapping.HasMany<ExpenseItem>(x => x.ExpenseItems).Cascade.AllDeleteOrphan();
エンティティは直接保存することもできます (集約ルートでもあります) が、テスト中、親の関連付けが削除されることは示されませんでした。
子オブジェクトには親自体への参照はなく、関連付けはすべて Nhibernate が処理する DB にあります。
また、経費項目 (子エンティティ) をその親の外に直接追加することはできないため、同じ子エンティティを別の親に割り当てることはできません。以下のコードを参照してください。
public virtual ExpenseItem AddNewExpenseItem(ExpenseAnalysis analysis,
string recipientName,
string purchaseAccountReference,
string expenseDescription,
string expenseNotes,
Money value,
VATAnalysis vat)
{
Validate.IsNotNull<ExpenseAnalysis>(analysis);
Validate.IsNotNull(expenseDescription);
....
ExpenseItem newExpenseItem = new ExpenseItem(analysis,
recipientName,
purchaseAccountReference,
expenseDescription,
expenseNotes,
value,
vat,
expenseItemUniqueReference,
true,
Candidate.Assessment);
_expenseItems.Add(newExpenseItem);
....
何か案は?