有几篇与此错误相关的帖子,但我遇到了一些不同的问题。
非常简单的 NHibernate 场景。具有一对多关系的父表和子表。一位家长可以有多个孩子。
我需要删除带有子记录的父记录,因此我将非常基本的代码放在一起,效果很好:
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);
作品。删除子记录和父记录。
如果我采用上面的逻辑并将其转换为“服务”方法,DeleteRecord(ParentRecord parentRecord)
则它开始失败并出现非法尝试将集合与两个打开的会话相关联错误ParentRecordRepository.Delete(parentRecord);
通过实例化一个服务类然后调用 DeleteRecord 方法来调用服务:
var parentRecord = ParentRecordRepository.Get(id);
var recordService = new RecordService();
recordService.DeleteRecord(parentRecord);
想不通为什么。帮助 ?