subsonic 3 - 该操作对于事务状态无效

发布于 2024-08-01 16:22:03 字数 663 浏览 6 评论 0原文

当我到达 ud.save() 时,我正在尝试以下代码,

UserDetail ud = UserDetail.SingleOrDefault(u => u.UserName == CurrentUserName);
  if (ud == null)
    ud = new UserDetail();

Address uAddress = ud.AddressId.HasValue
                    ? Address.SingleOrNew(a => a.Id == ud.AddressId)
                    : new Address();

using (TransactionScope tc = new TransactionScope()) 
{
  uAddress.Save();
  ud.AddressId = uAddress.Id;
  ud.Save(); // error is here
  tc.Complete();
}

但收到错误“该操作对于事务状态无效”。 ---> System.Transactions.TransactionPromotionException:尝试促进事务时失败'

如果我注释掉事务部分它工作正常,不是 .SingleOrDefault 与数据库断开连接吗?

谢谢

I'm trying the following code

UserDetail ud = UserDetail.SingleOrDefault(u => u.UserName == CurrentUserName);
  if (ud == null)
    ud = new UserDetail();

Address uAddress = ud.AddressId.HasValue
                    ? Address.SingleOrNew(a => a.Id == ud.AddressId)
                    : new Address();

using (TransactionScope tc = new TransactionScope()) 
{
  uAddress.Save();
  ud.AddressId = uAddress.Id;
  ud.Save(); // error is here
  tc.Complete();
}

when i reach ud.save() i get the error 'The operation is not valid for the state of the transaction. ---> System.Transactions.TransactionPromotionException: Failure while attempting to promote transaction'

if i comment out the transaction part it works fine, isn't .SingleOrDefault disconnecting from the db ?

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

素染倾城色 2024-08-08 16:22:03

您需要将 TransactionScope 包装在 SharedDbConnectionScope 中,请参阅此处了解详细信息。 以下内容应该适用于您的示例

using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope()){
{
  using (TransactionScope tc = new TransactionScope()) 
  {
    uAddress.Save();
    ud.AddressId = uAddress.Id;
    ud.Save(); // error is here
    tc.Complete();
  }
}

You need to wrap your TransactionScope in a SharedDbConnectionScope, see here for details. The following should work for your example

using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope()){
{
  using (TransactionScope tc = new TransactionScope()) 
  {
    uAddress.Save();
    ud.AddressId = uAddress.Id;
    ud.Save(); // error is here
    tc.Complete();
  }
}
携余温的黄昏 2024-08-08 16:22:03

这是 subsonic 3.0.0.3 的一个错误,

可以在这里找到修复问题 69< /a>

it's a bug with subsonic 3.0.0.3

the fix can be found here issue 69

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文