NHibernate:是否可以为DELETE语句阻止乐观的脏锁?

时间:2015-06-04 19:05:29

标签: nhibernate

我有像这样的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一样简单。

1 个答案:

答案 0 :(得分:0)

您可以为NHibernate提供自己的DELETE SQL语句,但目前,代码映射不支持它。你可以这样做:

  1. 创建配置并添加映射
  2. 执行此操作后,找到实体的映射为cfg.ClassMappings.Single(x => x.EntityName == "MyEntity").SetCustomSQLDelete("DELETE FROM MyEntity WHERE Id = ?", true, ExecuteUpdateResultCheckStyle.Count);