0

我正在尝试以下代码

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();
}

当我到达 ud.save() 时,我收到错误“操作对于事务状态无效。---> System.Transactions.TransactionPromotionException:尝试提升事务时失败'

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

谢谢

4

2 回答 2

1

您需要将 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();
  }
}
于 2009-08-18T07:44:53.317 回答
1

这是亚音速 3.0.0.3 的错误

修复可以在这里找到问题 69

于 2009-08-19T00:52:20.387 回答