Cascade.AllDeleteOrphan()。ReadOnly()不起作用

时间:2017-06-14 23:04:37

标签: c# nhibernate fluent-nhibernate

任何人都可以检查这个属性及其映射,并向我解释它为什么会触发此错误。

注意 当我发表评论.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)

1 个答案:

答案 0 :(得分:1)

您正在尝试合并两个不兼容的设置。

在实际的NHibernate映射中,

集合的Fluent ReadOnly确实是mutable="false"。此选项将集合声明为不可变。要删除孤儿,首先需要将它们孤立,这意味着将它们从集合中删除,这意味着要对其进行变异。