我有像这样的Nhb(版本3.3.3)映射配置
.Override<MyObject>(m =>
{
m.LazyLoad();
m.DynamicUpdate();
m.OptimisticLock.Dirty();
...
}
脏乐观锁定适用于UPDATE语句,但会抛出一些异常,如#34;此SqlParameterCollection的无效索引80,其中Count = 80。&#34;当我为[MyObject]运行DELETE语句时。其中一个已知原因是配置映射中的重复对象属性,但我没有重复。是否可以为DELETE语句切换脏锁定而不进行UPDATE?实际上我根本不需要对DELETE进行乐观锁定,我希望它像DELETE from MyObject WHERE Id=12343
一样简单。
答案 0 :(得分:0)
您可以为NHibernate提供自己的DELETE SQL语句,但目前,代码映射不支持它。你可以这样做:
cfg.ClassMappings.Single(x => x.EntityName == "MyEntity").SetCustomSQLDelete("DELETE FROM MyEntity WHERE Id = ?", true, ExecuteUpdateResultCheckStyle.Count);