このエラーに関連する投稿がいくつかありますが、私は何か違うことに遭遇しています。
非常に単純な NHibernate シナリオ。1 対多の関係を持つ親テーブルと子テーブル。1 つの親が複数の子を持つことができます。
子レコードを含む親レコードを削除する必要があるため、正常に機能する非常に基本的なコードをまとめました。
var childRecordList = new List<ChildRecord>();
var parentRecord = ParentRecordRepository.Get(parentRecordId);
childRecordList = ChildRecordRepository.GetAll().Where(c=>c.ParentRecord.Id==parentRecord.Id);
foreach(var childRecord in childRecordList)
{
ChildRecordRepository.Delete(childRecord);
}
ParentRecordRepository.Delete(parentRecord);
動作します。子レコードと親レコードを削除します。
上記のロジックを " " としてサービス メソッドに変換すると、コレクションを 2 つの開いているセッションに関連付けようとDeleteRecord(ParentRecord parentRecord)
する不正な試みで失敗し始めます。ParentRecordRepository.Delete(parentRecord);
サービスは、サービス クラスをインスタンス化してから DeleteRecord メソッドを呼び出すことによって呼び出されます。
var parentRecord = ParentRecordRepository.Get(id);
var recordService = new RecordService();
recordService.DeleteRecord(parentRecord);
理由がわかりません。ヘルプ ?