Как избежать MSDTC? - PullRequest
       14

Как избежать MSDTC?

2 голосов
/ 04 марта 2009

Может быть, это просто глупая идея, поэтому я добавляю ее сюда:

Я создаю приложение, используя одну базу данных для базовых и текущих данных (клиенты, статьи, инвентарь, открытые счета-фактуры, ...) и одну базу данных в год для архивных данных (старые счета-фактуры, перемещение запасов, ...) .

Есть только одна неприятная маленькая проблема: MSDTC. Большинство транзакций касаются только одной базы данных, но некоторые касаются текущей базы данных и одного архивного года. Поскольку все базы данных находятся на одном сервере, это может быть простая транзакция между двумя базами данных.

Однако, Linq для сущностей вынуждает меня создать отдельное соединение для каждой базы данных, и здесь запускается MSDTC, требуя a) быть установленным и b) замедляет все это.

Досадно!

Нет ли способа заставить две модели структуры сущностей ADO.Net использовать одно и то же соединение, каждая из которых имеет свою текущую базу данных?

Я уже пытался указать базу данных в схеме EF, но EF не нравится и блокирует ее.

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

1 Ответ

2 голосов
/ 04 марта 2009

Попробуйте вызвать ChangeDatabase для вашего соединения. MSDTC всегда будет задействован, если вы используете более одного соединения. Даже для одной базы данных. Поэтому я могу предложить всегда поддерживать одно соединение и менять базу данных с помощью этого метода.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...