2015-05-29 142 views
2

我想在使用ServiceStack OrmLite的事务内执行SQL。下面的代码适用于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