gpt4 book ai didi

c - 我在 EFCore 中使用同一连接的多个上下文时遇到问题。如果有人能帮助我,我将非常感激

转载 作者:行者123 更新时间:2023-11-30 16:21:49 25 4
gpt4 key购买 nike

我在 EFCore 中使用同一连接的多个上下文时遇到问题。错误消息是:指定的事务与当前连接没有关联。只能使用与当前连接关联的事务。

首先我引用了以下文档进行了测试。 https://learn.microsoft.com/en-us/ef/core/saving/transactions

 public void Get()
{
var options = new DbContextOptionsBuilder<testContext>()
.UseMySql("Server=127.0.0.1;User Id=test;Password=test123456!;Database=test")
.Options;


using (testContext con1 = new testContext(options))
{
using (var transaction = con1.Database.BeginTransaction())
{
con1.User.Add(new User() { Address = "aaaaaaaaaaaaaaaaa", Name = "aaaaaa", Tel = "1111111111" });
con1.SaveChanges();

using (testContext con2 = new testContext(options))
{
con2.Database.UseTransaction(transaction.GetDbTransaction());

con2.Userbook.Add(new Userbook() { Bookbar = "232323", Bookname = "1212", Userid = 1 });
con2.SaveChanges();
}

transaction.Commit();

}
}
}

运行到:con2 时发生错误。数据库。 UseTransaction(事务.GetDbTransaction())。

指定的事务与当前连接没有关联。只能使用与当前连接关联的事务。

首先,在演示代码中,CON1和con2的两个上下文实例使用了相同的连接对象选项,符合EFCore的相关语法,与上面链接的官方DEMO表示法一致,但我不这么认为不明白为什么添加 DbContext 时出错。数据库。使用Transaction (DbTransaction) API 在同一事务中注册两个上下文。我希望有人能帮助我。

最佳答案

我认为你不能这样做。您正在创建上下文 con1,然后从与连接相关的 win con1 创建事务。这就是为什么当您创建 con2 并使用 con1 中的事务时会遇到问题。

对于这个测试,使用事务是非常奇怪的。因为,当您在上下文中操作数据时,它将在一个事务中工作。当您调用 SaveChanges 时,就像提交事务一样。

关于c - 我在 EFCore 中使用同一连接的多个上下文时遇到问题。如果有人能帮助我,我将非常感激,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54721194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com