Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.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/6/entity-framework/4.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# 实体框架并发_C#_Entity Framework - Fatal编程技术网

C# 实体框架并发

C# 实体框架并发,c#,entity-framework,C#,Entity Framework,我正在开发使用sql server的应用程序,我从多个源读取和更新数据 因此,存在一个问题,即更新已更新的数据 我如何处理这个问题? (我知道EF已经构建了并发模式,但如果我理解正确,如果我的设计每次都创建和处理contextobject,这将不起作用)秘密通常是使用时间戳字段,并在提交到db之前检查对象中的值。有一篇文章是关于这个主题的。这篇文章讨论了并发模式,正如我所说的,如果重新创建我的上下文对象,我认为这是行不通的。通过将时间戳上的并发模式设置为“固定”,这意味着它要求时间戳保持不变,即

我正在开发使用sql server的应用程序,我从多个源读取和更新数据

因此,存在一个问题,即更新已更新的数据

我如何处理这个问题?
(我知道EF已经构建了并发模式,但如果我理解正确,如果我的设计每次都创建和处理contextobject,这将不起作用)

秘密通常是使用时间戳字段,并在提交到db之前检查对象中的值。有一篇文章是关于这个主题的。

这篇文章讨论了并发模式,正如我所说的,如果重新创建我的上下文对象,我认为这是行不通的。通过将时间戳上的并发模式设置为“固定”,这意味着它要求时间戳保持不变,即使将传入数据附加到上下文中。如果时间戳与您提供的时间戳不匹配(以前在您先前的上下文会话中检索到),则更新将失败,因为记录已更改。在我看来,这就是本文所说的。据我所知,只有在我为所有数据库操作保留相同的上下文对象时,这才会起作用,但如果我每次都创建新的上下文对象,如:using(var context=new EntityContext()),它将不起作用。或者是吗?不是这样的,时间戳是一个只读SQL字段,在更新记录时由SQL Server更新。通过将其设置为fixed,您将向EF指示它不应更改,如果它已更改,则您知道基础db记录已更改。并发支持无法更新。可能值得补充的是,即使EF无法捕获并发冲突,如果您尝试使用包含不同时间戳的记录更新记录,SQL Server也会返回错误。