Могу ли я повторно использовать соединение из DataContext в Linq для Sql? - PullRequest
0 голосов
/ 13 июля 2010

DataContext имеет свойство Connection типа DbConnection, и мне было интересно, могу ли я использовать его повторно.Я пытался использовать его для создания команды с использованием CreateCommand и использования считывателя без нее, но я получил ошибки, в которых говорится о ожидающей транзакции или о чем-то подобном.

В основном я пытаюсь выяснить,есть рекомендации или рекомендации по повторному использованию этого объекта подключения.

Сама строка подключения на самом деле не помогает, так как я не могу создать новый объект подключения с абстрактным типом и не хочукод для определения конкретного типа провайдера.

Один из альтернативных подходов, который я собираюсь сделать, - это иметь мой производный тип DataContext, чтобы иметь члены, которые предоставляют фабричный метод для создания нового соединения с использованием той же информации о соединении.

К вашему сведению, этот запрос связан с необходимостью вызова специальной хранимой процедуры через DataContext, а не с разновидностью ExecuteMethodCall.Я не знал о ExecuteQuery и пока этого достаточно.Но для других ситуаций, когда ExecuteQuery неадекватен, мне нужен низкоуровневый доступ к данным с использованием соединения / команды и т. Д.

Ответы [ 2 ]

1 голос
/ 14 июля 2010

Почему бы не перевернуть его, а вместо этого предоставить соединения для текста данных, используя конструктор, который принимает соединение в качестве параметра?Таким образом, вы можете контролировать, когда соединения создаются и удаляются, открываются и закрываются, и можете повторно использовать их для других целей, не беспокоясь о внутреннем поведении L2S datacontext ...

0 голосов
/ 13 июля 2010

Не могу точно сказать, но соединение - это соединение. До тех пор, пока он не будет закрыт (или не возвращен в пул соединений), его можно будет использовать как через LINQ, так и другими способами.

...