Совместное использование транзакций БД между управляемым и неуправляемым кодом - PullRequest
2 голосов
/ 02 ноября 2010

У меня есть приложение .net3.5 C #.

Приложение использует EntityFramework в качестве интерфейса БД.

Это приложение вызывает c ++ неуправляемую dll, которая также использует БД. Эта DLL обновляет базу данных.

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

Как я могу это сделать? Могу ли я использовать одно и то же соединение БД с DLL? Могу ли я поделиться транзакцией с DLL?

Спасибо

Маттан

1 Ответ

0 голосов
/ 02 ноября 2010

С Entity Framework вы можете предоставить свой собственный экземпляр SqlConnection.Затем вы можете использовать этот экземпляр для запуска транзакций.Это дает вам контроль над соединением с базой данных, что является началом.

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

Поскольку класс SqlConnection полностью написан в управляемом коде, невозможно передать фактический дескриптор соединения в неуправляемый код и разрешить обычным неуправляемым функциям использовать это соединение.Поскольку у вас есть Entity Framework в качестве отправной точки, вам понадобится SqlConnection, поэтому разрешение DLL отправлять операторы SQL в управляемое соединение, вероятно, будет единственным способом.

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