TransactionScope и SQL Server Compact - PullRequest
1 голос
/ 14 июля 2011

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

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

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

Ответы [ 2 ]

2 голосов
/ 14 июля 2011

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

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

Обновление

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

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

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

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

...