当'对象[]'对于我的拦截器中的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个对象的列表,我删除了一个。我希望OnFlushDirty
让previousState
包含对象实体,但要使其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是否按预期工作?