获取DbContext.SaveChanges()删除的行数和编辑的行数
本文关键字:编辑 删除 DbContext SaveChanges 获取 | 更新日期: 2023-09-27 18:11:11
我使用实体框架6.1与代码优先的方法。当我使用DbContext.SaveChanges()作为结果时,我可以得到
写入底层数据库的对象数量。
但是,是否有可能获得高级统计数据:删除的行数,编辑的行数,添加的行数?
我的超级目标是获得每个实体的统计信息。
可能在实际调用SaveChanges()之前…
var modifiedCount = dbContext.ChangeTracker.Entries().Where(x => x.State == System.Data.EntityState.Modified).Count()
上面的代码行可以用来获取修改过的条目,同样你也可以获取删除和添加的条目。
但是您必须在调用SaveChanges()之前执行这些代码行
您可以使用db.GetChangeSet()
。这将包含三个列表:
var deletes = db.GetChangeSet().Deletes;
var updates = db.GetChangeSet().Updates;
var inserts = db.GetChangeSet().Inserts;
var all = db.GetChangeSet().All;
这可以在向数据库提交更改之前完成。
考虑创建一个名为country的表
db.Tblcountries.InsertOnSubmit(
new Tblcountry(){FkRegionId=1,CountryCode="US",Name="USA"});
var result= db.GetChangeSet().All.ToList();
All
列表和Insert
列表将包含以下列表:
PkCountryId Name CountryCode FkRegionId
0 USA US 1
参考:- DataContext。/ul>
根据文档,DbContext的返回值。SaveChanges是
写入底层数据库的对象数量。
因此,只有当不需要将实体保存到数据库中时,才有可能出现您所看到的情况。