代码之家  ›  专栏  ›  技术社区  ›  YMC

从Nhb脏乐观锁定中排除一个字段

  •  2
  • YMC  · 技术社区  · 9 年前

    我们在Nhb配置中使用脏乐观锁定设置实体更新:

    .Override<OurEntity>(x =>
    {
        x.DynamicUpdate();
        x.OptimisticLock.Dirty();
    ...
    }
    

    它生成只使用WHERE语句更新实际更改的字段的请求,以确保没有任何线程并行更新此字段,从而导致如下查询 UPDATE OurEntity SET f1 = 'new value' WHERE f1 = 'old value' .

    然而,如果现在我们需要从乐观锁定中排除一个字段,让它像其他几十个字段一样工作,该怎么办?这样,WHERE语句就不会在查询中包含该字段,因为我们不关心有多少线程以及并行更新该特定字段的频率。

    有可能吗?如果没有乐观锁定,对解决方法有何建议?谢谢

    解决方法之一是将字段移动到单独的表中,但我们希望避免这种方法。

    1 回复  |  直到 9 年前
        1
  •  1
  •   YMC    9 年前

    添加。不。乐观锁定检查中要忽略的字段上的OptimisticLock():

    .Override<OurEntity>(x =>
    {
        x.DynamicUpdate();
        x.OptimisticLock.Dirty();
        x.Map(f => f.FieldToExclude).Not.OptimisticLock();
        ...
    }
    

    它也适用于参考:

    References(f => f.ReferencedObject).Not.OptimisticLock();