我需要在两个模型下实现交易(使用两个分离的有界上下文)。所以代码应该像这样:
using (TransactionScope scope = new TransactionScope())
{
//Operation 1
using(var context1 = new Context1())
{
context1.Add(someCollection1);
context1.SaveChanges();
}
//Operation 2
using(var context2 = new Context2())
{
context2.Add(someCollection2);
context2.SaveChanges();
}
scope.Complete();
}
返回异常:
检测到环境事务。Entity Framework Core不支持环境事务。请参见http://go.microsoft.com/fwlink/?LinkId=800142
在链接中建议为两个上下文使用一个连接。并在context1的using块中使用context2。
但是如果我为每个模型使用自己的控制器/服务:
using (TransactionScope scope = new TransactionScope())
{
service1.DoWork();
service2.DoWork();
scope.Complete();
}
我该如何实现这个?在方法中添加连接作为参数似乎很荒谬。使用连接初始化服务也不是一个好主意。