任何人都可以检查这个属性及其映射,并向我解释它为什么会触发此错误。
注意
当我发表评论.ReadOnly()
时,如果我将级联角色从AllDeleteOrphan()
更改为All()
这是我的代码
public virtual IList<ApprovalApplicationTask> Tasks { get; protected set; }
HasMany(entity => entity.Tasks).KeyColumn("APPLICATION_ID").Cascade.AllDeleteOrphan()
.ReadOnly().Inverse();
这是我得到的错误
NHibernate.AssertionFailure:没有用于孤儿删除的集合快照 在NHibernate.Engine.CollectionEntry.GetOrphans(String entityName, IPersistentCollection集合) NHibernate.Engine.Cascade.DeleteOrphans(String entityName, IPersistentCollection pc)at NHibernate.Engine.Cascade.CascadeCollectionElements(Object parent, Object child,CollectionType collectionType,CascadeStyle样式,IType
的elemType,Object anything,Boolean isCascadeDeleteEnabled)
答案 0 :(得分:1)
您正在尝试合并两个不兼容的设置。
在实际的NHibernate映射中,集合的Fluent ReadOnly
确实是mutable="false"
。此选项将集合声明为不可变。要删除孤儿,首先需要将它们孤立,这意味着将它们从集合中删除,这意味着要对其进行变异。