Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取DbContext.SaveChanges()删除的行数和编辑的行数_C#_Entity Framework_Ef Code First - Fatal编程技术网

C# 获取DbContext.SaveChanges()删除的行数和编辑的行数

C# 获取DbContext.SaveChanges()删除的行数和编辑的行数,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我使用实体框架6.1和代码优先的方法。 当我使用它作为结果时,我可以得到 写入基础数据库的对象数 但这是否可以获得高级统计信息:删除的行数、编辑的行数、添加的行数 我的超目标是获得每个实体的统计数据 可能在实际调用SaveChanges()之前 上述代码行可用于获取修改后的条目,同样,您也可以获取已删除和已添加的条目 但是在调用SaveChanges()之前,必须先执行这些代码行。根据,DbContext.SaveChanges的返回值为 写入基础数据库的对象数 因此,只有当不需要将任何实体保存

我使用实体框架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