【发布时间】:2011-10-11 13:18:39
【问题描述】:
我有一个 WinForms 项目,我必须在其中读取大量 xml 文件 (2gb+) 并将数据存储在 MSSQL 数据库中。
10 分钟后,我收到错误消息:
"与当前连接关联的事务已完成但尚未被释放。必须释放该事务,该连接才能用于执行SQL语句。"
我认为这一定是超时问题,所以我做了以下操作:
我使用我的代码:
using (tran = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions()
{
IsolationLevel = System.Transactions.IsolationLevel.Serializable,
Timeout = TimeSpan.Zero //TimeSpan.FromHours(2)
}))
{
/*Here I read out xml, and use EF to write to DB*/
}
我在 App.config 中添加了:
<system.transactions>
<defaultSettings timeout="2:00:00"/>
</system.transactions>
我在 machine.config 中添加了:
<system.transactions>
<machineSettings maxTimeout="2:00:00"/>
</system.transactions>
在 MSSQL 中,我将远程查询超时设置为 0
仍然会发生此超时。我做错了什么?
【问题讨论】:
标签: .net entity-framework transactions transactionscope