C#Linq在每次阅读后都会看到审核注销

时间:2009-03-30 21:51:16

标签: c# sql-server linq

这不是SQL Connection Pooling and Audit Login/Logout

我有一个C#.NET 3.5应用程序,可以在本地数据库上更新SQL 2008上的大约30K记录。

逻辑是它首先检查记录是否存在SingleOrDefault(p => p.stock = stock&& p.number = number)并添加记录或更新。

我只关注使用SingleOrDefault的读取。

我使用SQLMetal.exe创建了datacontext文件。

我在SQL Profiler中看到每次读取后:
审核注销(1300读)
RPC:已完成sp_reset_connection
审核登录
RPC:已完成sp_executesql'select etc ...'

我使用2005和另一台数据库在另一台机器上创建了一个新项目,但得到了不同的结果 审核登录
RPC:已完成sp_execute sql ...
RPC:已完成sp_execute sql ...
RPC:已完成sp_execute sql ...
...

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

包装TransactionState对象中的所有内容为我解决了这个问题。例如:

using (TransactionScope ts = new TransactionScope())
{
   // do db stuff here

   ts.Complete();
}

请注意,即使我只是在进行数据库读取,我也这样做了。

另请注意,您必须向项目添加对System.Transactions的引用,如果它尚未存在的话。