• 首先我们大部分的efcore框架用的DbContext(或者封装的repo)都是底层注入的上下文容器实体。
  • 然后Dbcontext不是线程安全的,也就是说,你在当前线程中,只能创建一个 DbContext 实例对象(特定情况下),并且这个对象并不能被共享。
  • 当我们使用多线程去执行数据库的操作时就有可能造成各种问题。
  • 我这里就在网站启动时去跑发布和订阅任务。
  • 解决方案:使用using从ioc容器中创建新的dbcontext 。然后用完立即释放。这样就不会占用主线程的dbContext了。
     /// <summary>
    /// 执行未发布成功的信息
    /// </summary>
    public void ToBePublishs()
    {
    Console.WriteLine("开始执行未发布任务");
    using (var _eventClientDbContext = (EventClientDbContext)ServiceProvider.CreateScope().ServiceProvider.GetService(typeof(EventClientDbContext)))
    {
    var PublishsList = _eventClientDbContext.Publishs.Where(a => a.PublishStatus == false).ToList();
    List<Publishs> publishsList = PublishsList.ToList();
    if (publishsList.Count > )
    {
    Console.WriteLine("开始执行未发布任务,本次任务执行条数为:" + publishsList.Count());
    using (var tran = _eventClientDbContext.Database.BeginTransaction())
    {
    foreach (var PublishsInfo in publishsList)
    {
    //var Result = ClientPost(ClientType.Publishs, PublishsInfo);
    var Result = string.Empty;
    try
    {
    Result = ClientPost(ClientType.Publishs, PublishsInfo);
    if (Result.Contains("Success"))
    {
    PublishsInfo.PublishStatus = true;
    PublishsInfo.ModifyTime = DateTime.Now;
    _eventClientDbContext.Publishs.Update(PublishsInfo);
    _eventClientDbContext.SaveChanges();
    }
    }
    catch (Exception ex)
    {
    Console.WriteLine("执行未发布成功的信息抛出异常:" + ex.StackTrace + ex.Message);
    continue;
    }
    }
    tran.Commit();
    }
    }
    }
    Console.WriteLine("未发布任务End");
    }

最新文章

  1. json和jsonp的区别,ajax和jsonp的区别
  2. [置顶] Android 2016新技术
  3. Do带你解析:原生APP与web APP的区别
  4. SIP介绍
  5. JAVA学习中Swing部分JDialog对话框窗体的简单学习
  6. 未能加载文件或程序集“CefSharp, Version=1.25.XXXX”或它的某一个依赖项。试图加载格式不正确的程序。
  7. Qt之Concurrent框架
  8. bzoj1594
  9. 从问题看本质: 研究TCP close_wait的内幕
  10. Android-操作栏之选项菜单
  11. Spring MVC如何进行JSON数据的传输与接受
  12. Selenium 显示等待和隐式等待
  13. 爬取西刺ip代理池
  14. 对java泛型的理解
  15. vue 源码学习(一) 目录结构和构建过程简介
  16. django-form介绍
  17. C++学习(二十九)(C语言部分)之 顺序表
  18. iOS保存gif动态图
  19. 解题:USACO15JAN Grass Cownoisseur
  20. css中的display(显示)和visibility(可见性)

热门文章

  1. feign请求远程接口时报Caused by: java.net.UnknownHostException
  2. SP Flash Tool版本对应MTK处理器型号速查(SP Flash Tool Download)
  3. 【leetcode】1266. Minimum Time Visiting All Points
  4. java文件上传下载解决方案
  5. 运行时错误:“stack around the variable…was corrupted”
  6. 【杂题】[CodeForces 1172E] Nauuo and ODT【LCT】【口胡】
  7. 2-SAT (two-statisfiability) 算法 学习笔记
  8. HTML DOM的学习
  9. Python argparse 用法总结
  10. 剑指offer31----栈的压入、弹出序列