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();
}
答案
- 第一个代码在500(或更少)后将新更改保存在db上记录是实体,因此对数据库上的数据库进行了500次更新/插入同时。您不必为数据库中的每条记录所拥有的优势。缺点:如果这些记录中的任何一个有错误(问题),那么将不会更新任何记录。
- 2代码直接保存到数据库。
以上是关于EntityDbContext SaveChanges:这两个代码之间有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章
何时在 EF 6 中使用 BeginTransaction? vs SaveChanges [重复]
DbSet.Attach(实体)与DbContext.Entry(实体).State = EntityState.Modified 区别