删除的对象将通过级联(从关联中删除删除的对象)在nhibernate中重新保存

删除的对象将通过级联(从关联中删除删除的对象)在nhibernate中重新保存,nhibernate,nhibernate-mapping,cascading-deletes,delete-record,Nhibernate,Nhibernate Mapping,Cascading Deletes,Delete Record,在尝试从表中删除记录时,我不断遇到此错误。插入和更新除删除外的工作细节 以下是我的设置: 映射: HasMany(x => x.Items).AsList().AsBag().LazyLoad().Cascade.AllDeleteOrphan(); 获取方法: IRepositoryWithTypedId<BOD.Entities.Item, Guid> Rep = RepositoryFinder.For<BOD.Entities.Item, Guid&

在尝试从表中删除记录时,我不断遇到此错误。插入和更新除删除外的工作细节

以下是我的设置:

映射:

 HasMany(x => x.Items).AsList().AsBag().LazyLoad().Cascade.AllDeleteOrphan();   
获取方法:

  IRepositoryWithTypedId<BOD.Entities.Item, Guid> Rep = RepositoryFinder.For<BOD.Entities.Item, Guid>();
         BOD.Entities.Item tag = Rep.Get(new Guid("0A495241-082F-4314-8B79-000A524FC666"));

         Rep.Delete(tag); 

这两个仍然会导致错误。有人有什么建议吗?

这是因为
标记
包含在某个集合中,您应该将其从该集合中删除以实际删除它。否则,当您持久化收集实体时,将再次保存标记。

FYI,请在映射中去掉
AsList()
调用,除非您希望将其映射为nhibernate列表(即带有索引列)。
AsBag()
调用正在覆盖它,但您不想指定两个不同的集合映射规范。它不应该解决您的问题,只是需要您注意的事项。
 Repository().DbContext.CommitTransaction();
 Repository().DbContext.CommitChanges();