【发布时间】:2013-11-20 16:20:23
【问题描述】:
使用 PetaPoco,您可以像这样进行事务管理:
var newObject = new NewObject();
var newObjectId = 1;
using (var scope = db.GetTransaction())
{
newObject = db.SingleOrDefault<NewObject>("SELECT * FROM tblNewObject WHERE Id = @0", newObjectId);
scope.Complete();
}
虽然这对于管理何时提交事务更新非常有用,但对于控制事务的隔离级别(类似于使用传统 SQL 连接的方式)有点欠缺:
TransactionOptions transOptions = new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted };
using (new TransactionScope(TransactionScopeOption.Required, transOptions))
{
//here be transactions
}
在 PetaPoco 中,GetTransaction 返回一个新事务,使用该specific constructor 调用BeginTransaction。在这种情况下,BeginTransaction 使用 .NET 的 IDbConnection.BeginTransaction() - 它具有提供事务隔离级别的重载。据我所知,PetaPoco 没有提供任何方法来为该方法提供隔离级别。有谁知道是否可以实际修改 PetaPoco 的隔离级别,而不必深入研究源代码并添加一个采用隔离级别的重载构造函数?我很高兴这样做并提交一个拉取请求,但我想在我做这项工作之前确保我没有遗漏一些简单的东西。
【问题讨论】:
标签: c# transactions petapoco