2015-05-29 6 views
2

Я пытаюсь выполнить sql внутри транзакции с помощью ServiceStack OrmLite. Код ниже работает с Sqlite, но не с SqlServer. С SqlServer я получаю следующую ошибку:ServiceStack OrmLite и транзакции

ExecuteScalar требует, чтобы команда имела транзакцию, когда соединение, назначенное команде, находится в ожидающей локальной транзакции. Свойство Transaction команды не инициализировано.

С кодом что-то не так?

using (var trans = Db.BeginTransaction()) 
{ 
    try 
    { 
     foreach (myObject in myObjects) 
      Db.Insert<MyObject>(myObject); 
     trans.Commit(); 
    } 
    catch (Exception ex) 
    { 
     trans.Rollback(); 
     throw ex; 
    } 
} 

ответ

2

Кто-то поставил этот ответ в комментарии, а затем удалил его ... так:

BeginTransaction должен быть OpenTransaction

+0

Потому что я не мог найти 'OpenTransaction' в текущем исходном коде и у него не было времени попробовать код. Какую версию вы используете? –

+0

Справа вам нужно использовать 'db.OpenTransaction()', примеры на [домашней странице OrmLite] (https://github.com/ServiceStack/ServiceStack.OrmLite#transaction-support). – mythz