有没有办法通过LINQ查询获取提交到数据库的数据大小?

时间:2013-08-08 09:15:17

标签: c# linq

我正在编写一个示例程序来测试数据库连接性能(MySQL,Oracle,MSSQL)。

使用以下代码准备所有数据并排队:InsertOnSubmit()然后使用以下方法将其推送到数据库:

DateTime dbInsertStartTime = DateTime.Now;
db.SubmitChanges() ;
DateTime dbInsertStopTime = DateTime.Now;

我能够在几毫秒内获得操作时间。

如何获取排队写入到DB的数据大小?

该程序允许用户定义要生成的数据数量(如10种数据类型A,4种类型B等),而不是应该模拟实际工作条件的数量。

因此,我想知道生成了多少数据。

1 个答案:

答案 0 :(得分:0)

DataContextGetChangeSet() method,返回ChangeSet,其中包含已添加,修改或删除的所有对象 - 每个对象都有一个集合。使用更多的Linq,您可以将它们分成几种类型并计算它们以查看每种类型的数量。

另外,正如评论中注意到的那样,在进行计时操作时,您应该使用System.Diagnostics.Stopwatch代替DateTime;它具有更好的精度。

注意:

这个答案指的是Linq-To-SQL的DataContext。对于那些使用实体框架的人,DbContext.SaveChanges()返回一个int,表示受影响的实体数量,您可以使用SavingChanges事件检查ObjectStateManager并获取对象状态