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

在NHibernate中处理来自DB的约束冲突

  •  0
  • Ragesh  · 技术社区  · 17 年前

    目前,我已经实现了“先查询”这一难看的解决方法,以确保不会违反约束。这只是一个等待发生的竞争条件,我真的不想让用户看到“哎呀,DB做了一些有趣的事情!也许你应该再试一次。”之类的消息。

    有没有优雅的方法来解决这个问题?

    1 回复  |  直到 17 年前
        1
  •  0
  •   Stuart Childs    17 年前

    NHibernate不知道约束(并且首先很难强制实施唯一的约束),因此处理这一问题很大程度上取决于您。我认为您使用查询来检查值是否不存在的做法是正确的,但正如您所提到的,这就留下了另一个进程/线程首先插入值的可能性。该方法的解决方案是排他锁,但当然,您必须考虑该锁的含义。我不知道NHibernate的锁定方法是如何工作的,但是如果它们不能提供您所需要的,您可以随时访问连接并使用原始SQL。

    推荐文章