使用PetaPoco,您可以通过类似以下方式进行事务管理:
在PetaPoco中,GetTransaction返回一个新的事务,使用特定的构造函数调用BeginTransaction。在这种情况下,BeginTransaction使用.NET的IDbConnection.BeginTransaction()——它有一个重载以提供事务隔离级别。据我所知,PetaPoco没有提供任何方法来提供隔离级别给该方法。是否有人知道如何实际修改PetaPoco的隔离级别而不必深入源码并添加一个重载构造函数?我很高兴做这个工作并提交一个pull request,但在我开始工作之前,我想确保自己没有遗漏什么简单方法。
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返回一个新的事务,使用特定的构造函数调用BeginTransaction。在这种情况下,BeginTransaction使用.NET的IDbConnection.BeginTransaction()——它有一个重载以提供事务隔离级别。据我所知,PetaPoco没有提供任何方法来提供隔离级别给该方法。是否有人知道如何实际修改PetaPoco的隔离级别而不必深入源码并添加一个重载构造函数?我很高兴做这个工作并提交一个pull request,但在我开始工作之前,我想确保自己没有遗漏什么简单方法。