При использовании 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, не форсируя новую транзакцию, или это обычно не рекомендуется?