设置的简短描述:
EF Core与流畅的映射一起使用。有三个数据库,每个数据库有一个上下文。问题是在两个或所有三个上下文中开始一个事务范围。 OnConfiguration方法在每个上下文中都被覆盖,如下例所示:
public class MyContext : DbContext
{
private string _connectionString;
public MyContext(string connectionString)
{
_connectionString = connectionString;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
/* Replace a placeholder with the database name */
optionsBuilder.UseSqlServer(string.Format(_connectionString, "database1");
}
}
我已尝试开始交易:
在上下文中开始事务并将其传递给另一个上下文
using (var transaction = context1.Database.BeginTransaction())
{
context2.Database.UseTransaction(transaction.GetDbTransaction());
/*do something on context1*/
/*do something on context2*/
transaction.Commit();
}
开始交易范围
using (var scope = new TransactionScope())
{
/*do something on context1*/
/*do something on context2*/
/*do something on context3*/
scope.Complete();
}
EF会抛出环境事务异常。
我在互联网上找到了另一个解决方案(丢失链接,对不起家伙)。 他们没有将连接字符串传递给上下文,而是将连接本身传递给上下文。但我不明白如何在上下文中连接到不同的数据库。
有没有人可以解决这个问题?