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

C# 有没有办法通过LINQ查询获得提交到数据库的数据大小?,c#,linq,C#,Linq,我正在编写一个示例程序来测试数据库连接性能(MySQL、Oracle、MSSQL) 所有数据都准备好并使用以下命令排队:InsertOnSubmit(),然后使用以下命令推送到数据库: DateTime dbInsertStartTime=DateTime.Now; db.SubmitChanges(); DateTime dbInsertStopTime=DateTime.Now; 我能够以毫秒为单位获得操作时间 如何获取排队或写入数据库的数据大小 该程序允许用户定义要生成的数据数量(如10

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

所有数据都准备好并使用以下命令排队:
InsertOnSubmit()
,然后使用以下命令推送到数据库:

DateTime dbInsertStartTime=DateTime.Now;
db.SubmitChanges();
DateTime dbInsertStopTime=DateTime.Now;
我能够以毫秒为单位获得操作时间

如何获取排队或写入数据库的数据大小

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


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

DataContext有一个包含所有已添加、修改或删除的对象的返回-每个对象一个集合。使用多一点Linq,您可以将它们分为多个类型,并对它们进行计数,以查看每种类型有多少个

此外,正如注释中的Talie所指出的,在计时操作时,您应该真正使用
System.Diagnostics.Stopwatch
,而不是
DateTime
;它有更好的精度

注:
这个答案指的是LINQtoSQL的
DataContext
。对于使用实体框架的用户,
DbContext.SaveChanges()
返回一个
int
值,指示有多少实体受到影响,你可以使用<代码> SaveCurnchange 你需要使用秒表计时。你可能想考虑数据库提供的分析工具,它们应该做这样的事情。我同意使用秒表。这里比较了不同的计时技术。请注意,DateTime.Now计算时区差异,因此不适合测量时间,这就是为什么不应该使用它。我更改了标题以避免在标题中使用标记。用标签作为标题的前缀没有意义,而是尝试将它们作为一个整体包含在标题中。请阅读了解更多信息。“生成了多少数据”是什么意思?记录的数量?(您可能可以检查EF上下文以查找修改的/新的实体,但不确定是否存在原始连接。)客户端和数据库之间传输了多少字节?(最好在应用程序外部使用TCP代理来测量此值。)