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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EntityDbContext SaveChanges:这两个代码之间有什么区别?相关的知识,希望对你有一定的参考价值。

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

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

请看Unit of Work Desing Pattern

以上是关于EntityDbContext SaveChanges:这两个代码之间有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

entity framework 公共类

利用Entity Framework修改指定字段中的值

何时在 EF 6 中使用 BeginTransaction? vs SaveChanges [重复]

DbSet.Attach(实体)与DbContext.Entry(实体).State = EntityState.Modified 区别