Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 两个用户是否都发生concurrect异常_C#_Sql Server_Exception Handling_Concurrency_Data Access Layer - Fatal编程技术网

C# 两个用户是否都发生concurrect异常

C# 两个用户是否都发生concurrect异常,c#,sql-server,exception-handling,concurrency,data-access-layer,C#,Sql Server,Exception Handling,Concurrency,Data Access Layer,如果一个用户编辑了一条数据记录,而另一个用户同时也编辑了同一条记录,则两者都保存 1.)并发异常是否总是只对一个用户发生 事实上,第一名获胜是合乎逻辑的,但谁在技术方面是第一名。。。是否可能两个用户都得到这种异常 2.)那个太晚了,现在得到并发异常的人我想他可以访问 来自其他用户的新更新数据记录是?中的读取提交的sql server的默认隔离级别: 如果出现访问对象的并发请求,那么SQLServer将为它们创建队列并逐个处理它们。第二个用户将等待用户1完成任务的预定义时间,如果无法在该时间范围内

如果一个用户编辑了一条数据记录,而另一个用户同时也编辑了同一条记录,则两者都保存

1.)并发异常是否总是只对一个用户发生

事实上,第一名获胜是合乎逻辑的,但谁在技术方面是第一名。。。是否可能两个用户都得到这种异常

2.)那个太晚了,现在得到并发异常的人我想他可以访问


来自其他用户的新更新数据记录是?

中的
读取提交的
sql server的默认隔离级别:

如果出现访问对象的并发请求,那么SQLServer将为它们创建队列并逐个处理它们。第二个用户将等待用户1完成任务的预定义时间,如果无法在该时间范围内完成任务,则抛出错误。此时间范围可在sql server和ADO.net中配置

无论您是否希望并发访问,这都取决于sql server中定义的孤岛级别

我想是的。一个总是比另一个早;没有别的办法了。因此,一个更新将正常工作,另一个将抛出并发异常

这可能取决于您使用的数据访问方法,可能有一些系统可以更优雅地处理此类情况。但我怀疑是否有系统会给两个用户相同的例外,而不是你故意建立这种行为

正如Adam Houldsworth所说:这也可能取决于您自己编写代码的方式。您可以检查是否有多个用户开始编辑同一条记录,然后向这两个用户抛出异常。但我不相信这是你真正想要的。若有,;我误解了


2) 当然这是可能的,但这取决于您在应用程序中的构建。只需捕获并发异常并刷新用户B试图更新的任何编辑表单。然后他/她可以再试一次。总的来说,显然;我不知道你的具体情况。

见@Bond No这是一些理论信息,我需要实际发生的事情。我不同意你对第一点的回答。没有理由总是只发生在一个人身上。常识告诉我们应该,不是吗?我的意思是,这可能取决于你如何编码它和确切的DAL,但这会使整个问题变得沉默。在常规系统中,请求a将在请求B之前处理(或者反过来处理)。我将编辑我的答案以反映这一点。可能,但正如我继续解释的那样,它并没有那么简单。在乐观并发的最基本情况下,很可能是的。这是真的,但我没有看到任何理由不考虑最简单的情况。酶联免疫吸附试验提出的问题很难用其他方法回答。可能太多了。我同意你的观点,情况可能会复杂得多。@Clound是的,我的问题很广泛/模糊,因为我刚刚开始,试图在开始摸索隔离级别之前收集有关并发性的基本知识:PI只特别提到sql server中使用的默认隔离,但是对于所有db引擎,并发执行和隔离的作用是相同的。