C# 获取DbContext.SaveChanges()删除的行数和编辑的行数
我使用实体框架6.1和代码优先的方法。 当我使用它作为结果时,我可以得到 写入基础数据库的对象数 但这是否可以获得高级统计信息:删除的行数、编辑的行数、添加的行数 我的超目标是获得每个实体的统计数据 可能在实际调用SaveChanges()之前 上述代码行可用于获取修改后的条目,同样,您也可以获取已删除和已添加的条目 但是在调用SaveChanges()之前,必须先执行这些代码行。根据,DbContext.SaveChanges的返回值为 写入基础数据库的对象数C# 获取DbContext.SaveChanges()删除的行数和编辑的行数,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我使用实体框架6.1和代码优先的方法。 当我使用它作为结果时,我可以得到 写入基础数据库的对象数 但这是否可以获得高级统计信息:删除的行数、编辑的行数、添加的行数 我的超目标是获得每个实体的统计数据 可能在实际调用SaveChanges()之前 上述代码行可用于获取修改后的条目,同样,您也可以获取已删除和已添加的条目 但是在调用SaveChanges()之前,必须先执行这些代码行。根据,DbContext.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
参考:
GetChangeSet()
用于Linq to SQL(Linq to Entities和Entity Framework的前身),OP询问的Entity Framework中没有它。
PkCountryId Name CountryCode FkRegionId
0 USA US 1