EntityDbContext SaveChanges:这两个代码之间有什么区别?

时间:2019-12-04 10:05:47

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

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

           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();
            }

2 个答案:

答案 0 :(得分:1)

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

请查看Unit of Work设计模式。

答案 1 :(得分:0)

  1. 第一个代码在500(或更少)后将新更改保存在db上 记录是实体,因此对数据库上的数据库进行了500次更新/插入 同时。您不必为数据库中的每条记录所拥有的优势。缺点:如果这些记录中的任何一个有错误(问题),则所有记录都不会被更新
  2. 这两个代码直接保存到数据库。

请看看Unit of Work Desing Pattern