NHibernate OnFlushDirty未检测到List中的更改

时间:2015-10-12 12:11:01

标签: c# nhibernate

当'对象[]'对于我的拦截器中的currentState和previousState:

public override bool OnFlushDirty(object entity, object id, object[] currentState, object[] previousState, string[] propertyNames, IType[] types)

对于事务中已更改的列表具有相同的值。例如:

public class Entity
{
    public long Id { get; set; }
    public IList<OtherEntity> Others { get; set; }
}

如果我在实体类属性上的其他地方有3个对象的列表,我删除了一个。我希望OnFlushDirtypreviousState包含对象实体,但要使其Others属性的计数为3,并且currentState中的属性为OtherEntity但两者都有两个。

mapper.Class<Entity>(map => map.IdBag("Others", cm => { cm.Id(id => { id.Column("Id"); id.Generator(Generators.GuidComb); }); cm.Cascade(Cascade.Persist); cm.Table("Lnk_Entity_Others"); cm.Lazy(lazy ? CollectionLazy.Lazy : CollectionLazy.NoLazy); cm.Key(km => { km.Column(c => { c.Name("EntityId"); c.Index(String.Format("IX_{0}_{1}", "Lnk_Entity_Others", "EntityId")); }); km.Unique(true); }); }, em => em.ManyToMany(m => m.Column(c => { c.Name("OtherEntityId"); c.Index(String.Format("IX_{0}_{1}", "Lnk_Entity_Others", "OtherEntityId")); })))); 也是一个多对多关系,它在NHibernate中设置如下:

{{1}}

我怎样才能让它按原来的预期运作?我是否在“多对多”映射中设置了错误的内容,或者NHibernate是否按预期工作?

0 个答案:

没有答案