我有CustomerService类,该类复制客户对象并执行存储过程以将该副本存储在数据库中。我需要测试此服务。
该服务正在使用TransactionScope,因为它位于业务层之内,不应依赖于DbContext。还将IsolationLevel设置为repeatableRead,因为为了创建客户对象,它调用customerRepository来从原始客户那里检索信息,该信息在此操作中不应更改。
foo
我还想测试先前的方法,并且必须将方法调用包装到事务中。因此,我创建了另一个具有相同IsolationLevel的TransactionScope,它似乎可以正常工作,除非对数据库的最后一次读取调用无限等待。
public class CustomerService
{
public void Handle(CopyCustomer cmd)
{
using (var transaction = new TransactionScope(TransactionScopeOption.Required,
new TransactionOptions { IsolationLevel = IsolationLevel.RepeatableRead }))
{
// Mapping newCustomer from CopyCustomer command. Includes Reading from database ...
// Use custom stored procedure !
_customerRepository.Save(newCustomer)
transaction.Complete();
}
}
}
也许我做错了,但是我该如何解决这个问题呢?