2013-09-30 3 views
0

У меня впереди меня задача, которая требует использования локальных временных таблиц. По соображениям производительности я не могу использовать транзакции.Как получить соединение и удерживать его с помощью DAAB?

Временные таблицы, подобные транзакциям, требуют, чтобы все запросы приходились на одно соединение, которое не должно быть закрыто или сброшено. Как это сделать, используя блок приложений доступа к данным в корпоративной библиотеке?

+0

Вы хотите, чтобы вы манипулировали данными во временных таблицах, которые находятся на сервере через DAAB? Не можете ли вы манипулировать данными на стороне клиента? – Rikalous

+0

Да, все запросы должны проходить через DAAB. По соображениям производительности иногда нецелесообразно манипулировать данными на стороне клиента. Это редкие случаи, но они существуют. – Nezreli

ответ

1

Корпорация Enterprise будет использовать одно соединение с базой данных, если транзакция активна. Тем не менее, нет способа принудительно установить одно соединение для всех методов базы данных в отсутствие транзакции.

Вы можете использовать метод Database.CreateConnection для подключения к базе данных. Затем вы можете использовать это соединение вместе с объектами DbCommand для выполнения соответствующей логики.

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

+0

Исходный код метода Database.ExecuteNonQuery (DbCommand) указывает, что DAAB всегда будет открывать новое соединение, независимо от того, имеет ли команда один из них, поэтому я не уверен, что будет делать метод CreateConnection. – Nezreli

+0

Вы вызываете 'CreateConnection', а затем держитесь за это соединение и используете его столько, сколько вам нужно. –

+0

Это означает, что я не могу использовать методы Database.Execute *, потому что они создают собственное соединение. Что я теряю, делая это? – Nezreli

0

Невозможно увидеть способ сделать это с помощью DAAB. Я думаю, вам придется отказаться от использования соединений ADO.Net и самостоятельно управлять ими, но даже тогда игра с временными таблицами на сервере из клиентского приложения не влияет на меня как на оптимальное решение проблемы ,