【发布时间】:2011-05-26 09:45:40
【问题描述】:
我间歇性收到以下异常:
拥有的实体实例不再引用具有 cascade="all-delete-orphan" 的集合:Domain.Foo.Bars
Google 上针对此异常的大多数结果表明,当您取消引用集合时会出现问题,而不是在现有集合上调用 Clear() 然后添加新实体。 不过,这不是我的问题。
以下是所有相关代码:
public class Foo
{
public int Id { get; set; }
private Iesi.Collections.Generic.ISet<Bar> _bars = new HashedSet<Bar>();
public virtual ICollection<Bar> Bars
{
get { return _bars; }
}
}
public class Bar
{
public int Id { get; set; }
public DateTime Expiry { get; set; }
}
public class FooDbMap : ClassMap<Foo>
{
public FooDbMap
{
Id(x => x.Id);
HasMany(x => x.Bars)
.Access.CamelCaseField(Prefix.Underscore)
.KeyColumn("FooId")
.LazyLoad()
.Where("Expiry > (select getdate())")
.AsSet()
.Cascade.AllDeleteOrphan();
}
}
您会看到这段代码无法取消对 Bars 集合的引用,即这样做:
foo.Bars = new List<Boo>();
什么可能导致错误?
【问题讨论】:
标签: nhibernate