TransactionScope и SQL Server Compact

SQL Server Compact не поддерживает распределенные транзакции. Поэтому, если внутри TransactionScope более одного соединения, генерируется исключение. Есть ли способ настроить поставщика ADO.NET, чтобы использовать одно соединение для той же строки подключения?

Я понимаю, что могу использовать обычные транзакции через connection.BeginTransaction, но TransactionScope для меня предпочтительнее.

ОБНОВЛЕНИЕ.
Извините, я не упомянул, что работаю с Entity Framework, поэтому у меня нет контроля над SQL Command. Я могу просто передать строку подключения. И по какой-то причине несколько объектов соединений созданы для одной строки соединения внутри TransactionScope.

2 ответа

Решение

Обновленный ответ (пример кода здесь):

using (var context = new MyContext())
{
    using (var txscope = new TransactionScope())
    {
        context.Connection.Open();
        // do query 1
        // do query 2
    }
}

Обновить

Как вы сказали, другое решение - создать объект соединения и использовать его в конструкторах для контекста объекта.

Больше информации о том, когда сущности открывают новое соединение.

Моя ошибка была в том, что я передал строку подключения ObjectContext, Если я передаю объект подключения, используется только одно подключение.

Другие вопросы по тегам