乐观并发问题刚刚开始发生,原因可能是什么?

时间:2016-03-18 08:35:07

标签: sql-server asp.net-mvc forms knockout.js concurrency

我们有一个编辑表单,只允许一个用户一次编辑表单。表单非常大,并且其中包含相当多的Knockout.js代码,此代码拦截Submit按钮单击以进行验证,然后如果一切正常则提交表单。

服务器端或视图端没有任何变化,但在最近几天我们记录了大量的OptimisticConcurrency错误。

  

存储更新,插入或删除语句会影响意外的行数(0)。自实体加载后,实体可能已被修改或删除。有关理解和处理乐观并发异常的信息,请参阅http://go.microsoft.com/fwlink/?LinkId=472540

唯一的另一个相关性是,有些用户抱怨网站运行缓慢。我希望有人可能猜到导致这种情况的原因是什么?它可能影响不到1%的表格,但这仍然会带来很多不便。它是负载平衡服务器上的MVC 5站点。

除了可能导致这种情况之外,还有其他一些想法,我应该怎么做才能解决问题,比如切换到客户端赢得并发异常?这些是医疗记录,因此任何数据丢失都可能是有害的。

更新

从评论中,这是按下提交按钮时运行的代码。

self.saveClick = function () {
    validationTests();
    if (self.validationError()) {
        return false;
    } else {
        return true;
    }
}

这样就不会禁止多次按下按钮了,不是吗?这可能是问题,因为现在网站运行缓慢。

1 个答案:

答案 0 :(得分:1)

当您从同一个用户获得多个提交时,可能值得确保您的提交按钮在点击时被禁用。 以下是一个如何执行此操作的示例的问题

Disable submit button on form submit

值得注意的是,当您进行大量验证时,如果验证失败,则需要重新启用该按钮。