Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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 Core_Asp.net Core Webapi_Race Condition - Fatal编程技术网

C# 异步合理性检查是否会导致竞态条件出现?

C# 异步合理性检查是否会导致竞态条件出现?,c#,entity-framework-core,asp.net-core-webapi,race-condition,C#,Entity Framework Core,Asp.net Core Webapi,Race Condition,我有一个使用EF Core的.NET5WebAPI项目,并考虑了我的业务处理程序的数据一致性。我个人认为这个问题与技术无关,也适用于其他web框架。以下只是一个示例(设计可能不好) 假设API提供了两个端点 POST/users/{userId}/documents/{documentId}将用户链接到文档 DELETE/users/{userId}删除用户 数据库包含一个交叉表 使用者 文件 用户1 文件1 用户1 文件2 用户2 文件2 或者,作为一名开发人员,我是否必须专门处理这个问题

我有一个使用EF Core的.NET5WebAPI项目,并考虑了我的业务处理程序的数据一致性。我个人认为这个问题与技术无关,也适用于其他web框架。以下只是一个示例(设计可能不好)

假设API提供了两个端点

  • POST/users/{userId}/documents/{documentId}
    将用户链接到文档
  • DELETE/users/{userId}
    删除用户
数据库包含一个交叉表

使用者 文件 用户1 文件1 用户1 文件2 用户2 文件2 或者,作为一名开发人员,我是否必须专门处理这个问题(通过为数据库异常添加额外的try/catch语句)

你必须用某种方式来处理它。要么:

  • 扩展事务以包括选择和插入,或
  • 处理异常(通过重试也将重试选择或返回错误代码),或
  • 不要处理异常,并让用户/UI在出现错误时刷新
  • 如果我的数据源不是数据库怎么办


    这是一个不可能广泛的问题。因此,答案也很广泛:“使用为您的数据源推荐的任何并发技术。”

    事务也可以用于包含SELECT的操作,如果您对此感到困扰,那么
    我在这里错了吗?请求是一个接一个地处理的吗?
    它们不是一个接一个地运行的。@CaiusJard 1。那么我应该让每个处理程序都是事务性的吗?2.如果我的数据源不是数据库怎么办?@mjwills那么如果它们同时运行,您将如何处理它?
    那么如果它们同时运行,您将如何处理它?
    请参见下面的答案。