【问题标题】:EntityDbContext SaveChanges : What are the differences between these two codes?EntityDbContext SaveChanges :这两个代码有什么区别?
【发布时间】:2020-03-29 02:28:41
【问题描述】:

为了性能,异常捕获等,这两个代码有什么区别:

           int count = 0;
           foreach (var record in SomeDbEntityList)
            {
                count++;
                dbContext.SomeDbEntity.Add(record);
                if (count > 500)
                {
                  dbContext.SaveChanges();
                  count = 0;
                }
            }
            //LeftOver
            if (count > 0)
                dbContext.SaveChanges();

直接代码:

            foreach (var record in SomeDbEntityList)
            {
                dbContext.SomeDbEntity.Add(record);
                dbContext.SaveChanges();
            }

【问题讨论】:

    标签: c# entity-framework exception entity-framework-6 entity-framework-4


    【解决方案1】:
    1. 第一个代码在 500(或更少)之后将新更改保存在 DB 上 记录是实体,因此对数据库进行了 500 次更新/插入 同时。
      • 优点:您不会针对数据库中的每条记录。
      • 缺点:如果这些记录中的任何一个有错误(问题),则不会更新任何记录。
    2. 第二个代码直接保存到数据库。

    请看Unit of Work设计模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      • 2018-04-16
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多