这不是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 ...
...
有什么想法吗?
答案 0 :(得分:1)
包装TransactionState对象中的所有内容为我解决了这个问题。例如:
using (TransactionScope ts = new TransactionScope())
{
// do db stuff here
ts.Complete();
}
请注意,即使我只是在进行数据库读取,我也这样做了。
另请注意,您必须向项目添加对System.Transactions的引用,如果它尚未存在的话。