【发布时间】:2015-05-29 12:11:46
【问题描述】:
我正在尝试使用 ServiceStack OrmLite 在事务中执行 sql。下面的代码适用于 Sqlite,但不适用于 SqlServer。使用 SqlServer 我收到以下错误:
当分配给命令的连接处于挂起的本地事务中时,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;
}
}
【问题讨论】:
-
如果我错了请纠正我,但是在catch块中调用
Rolback()不是没用吗?我认为只要你不提交它,交易就不会通过。 github.com/ServiceStack/ServiceStack.OrmLite/blob/… -
从技术上讲,在大多数情况下您可能不必这样做,但似乎是一种很好的形式......更多关于这个的信息在这里:stackoverflow.com/questions/7971903/…
标签: sql-server transactions ormlite-servicestack