DataContext.Connection是否在不同的Datacontexts

时间:2018-06-05 12:04:48

标签: c# sql-server linq-to-sql database-connection datacontext

使用linq2sql访问数据库时,我创建了一个新的DataContext。据我所知,底层的DBConnection是池化的,可以重用。

using (var dc = new DB_DataContext())
{ 
    //dc.Connection may be persistent across multiple DataContexts
}

现在,我已经在各种博客中找到了stackoverflow,可以更改连接的某些属性,而无需事务的开销:

// the following query should preferably be terminated, 
// in case of a deadlock with a more important query
dc.ExecuteCommand("SET DEADLOCK_PRIORITY LOW");

// the following query should be aborted, if it takes too long to acquire the locks
dc.ExecuteCommand("SET LOCK_TIMEOUT 50");

// the following query can handly dirty reads and should not acquire read locks
dc.ExecuteCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED");

但这对我来说似乎很危险。

在当前的DataContext上执行这些命令实际上是否安全,或者这会使用非标准连接“中毒”连接池? 这些设置是否可能在不同的DataContexts中持续存在?

如果是这样,是否有一种安全的方式来解决,例如更改linq2sql查询的死锁优先级,而不强制执行新事务,或者这通常是不明智的?

0 个答案:

没有答案