zoukankan      html  css  js  c++  java
  • asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案

    之前碰到asp.net core异步进行新增操作并且需要判断某些字段是否重复的问题,进行插入操作的话会导致数据库中插入重复的字段!下面把我的解决方法记录一下,如果对您有所帮助,欢迎拍砖!

    场景:EFCore操作MySql数据库的项目,进行高并发插入操作

    需求:消息队列,最后进行新增数据的操作,插入前判断某些字段是否重复

    问题:采用await db.SaveChangesAsync()进行提交操作前,FirstOrDefault判断数据库中是否有重复数据。测试100条一样的数据进行并发插入,结果数据库中插入成功四条重复数据!

    原因分析:有可能是await db.SaveChangesAsync异步进行操作导致的时差问题!

    解决方案:

    第一种方案: 数据库中对表设置复合主键,即把需要判断不能重复的字段组合起来设置主键(不建议这种方式);

    第二种方案:数据库插入操作采用同步的方式进行插入,即:await db.SaveChangesAsync() 改为 db.SaveChanges();

    第三种方案:数据库查询操作FirstOrDefault 以及数据库提交插入操作 await db.SaveChangesAsync() 放在一个数据库事务中即用   using (var tran = dBContext.Database.BeginTransaction())包裹下代码即可!

    以上就是asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案!希望对您有所帮助!

  • 相关阅读:
    Contoso 大学 1 为 ASP.NET MVC 应用程序创建 EF 数据模型
    NuGet 入门
    关于Oracle表及字段的注释 转
    javascript + xmlhttp 调用webservice 吃力不讨好
    转 javascript小技巧
    oracle电子书下载站
    JavaScript中引号的嵌套
    数据结构中的各种排序方法JS实现
    TSQL查询进阶流程控制语句
    TSQL查询进阶数据集之间的运算
  • 原文地址:https://www.cnblogs.com/yilezhu/p/9106118.html
Copyright © 2011-2022 走看看