【问题标题】:BeginTransaction return null connectionstring [closed]BeginTransaction 返回空连接字符串 [关闭]
【发布时间】:2022-01-03 09:29:20
【问题描述】:

我在工作单元中使用小巧的 ORM
使用 IDbConnection/IDbTransaction 处理(关闭/提交/回滚)

public IDbTransaction BeginTransaction(string connectionName = "", bool useWadminUser =   false, IsolationLevel isolationLevel = IsolationLevel.ReadCommitted)
{
    using (DbConnection db = GetDbconnection(connectionName, useWadminUser))
    {
        db.Open();
        _dbTransaction = db.BeginTransaction();
    }
    return  this._dbTransaction;
}

DbConnection GetDbconnection(string connectionName = "", bool useWadminUser = false)
{
    UserInfoHelper userInfoHelper = _iSecurityAuthorizService.GetCookieProfileUser();
    return new SqlConnection(
        string.Format(_config.GetConnectionString(string.IsNullOrEmpty(connectionName) ? SqlHelper.DefaultConnection : connectionName),
            SqlHelper.WadminUserName, SqlHelper.WadminPassword));
}

我调用 service var tran= _dapper.BeginTransaction(); 但 tran 为空。 请看这个this pic1

【问题讨论】:

  • 是的,它是空的。在您尝试使用它之前,您正在关闭并释放连接。
  • iam 使用关闭和处理但为空
  • 您需要在BeginTransaction 和dbTransaction.Commit() 之间执行您的SQL,否则您无法释放连接,否则事务会回滚。你也应该用using 处理dbTransaction

标签: sql-server ado.net dapper


【解决方案1】:
public IDbTransaction BeginTransaction(string connectionName = "", bool useWadminUser =   false, IsolationLevel isolationLevel = IsolationLevel.ReadCommitted)
{
    using (DbConnection db = GetDbconnection(connectionName, useWadminUser))
    {
        db.Open();
        _dbTransaction = db.BeginTransaction();
    } <-- Here
    return  this._dbTransaction;
}

在上面的指针处,连接被关闭并释放,并与之进行交易。你不能使用这样的交易。

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 2021-11-06
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多