在 Microsoft Practices EnterpriseLibrary 中保持连接打开以运行多个 SP

问题描述 投票:0回答:1

我们正在使用 EnterpriseLibrary 连接到数据库。我想在同一连接上运行 2 个或更多 SP。我想设置上下文并在同一会话中运行多个 SP。 但是当第一个 SP 时,连接就会关闭。

 db = DatabaseFactory.CreateDatabase();
 DbCommand selectCommand = db.GetStoredProcCommand("dbo.usp_set_session_context");
 db.ExecuteReader(selectCommand);


 DbCommand selectCommand1 = db.GetStoredProcCommand("dbo.usp_get_session_context");
 using (IDataReader dataReader = db.ExecuteReader(selectCommand1))
 {
     while (dataReader.Read())
     {
         var data = dataReader["LoginUserAccountName"].ToString();
        
     }
 }

我确实尝试打开连接并尝试使用它,但它不起作用

//using (var con = db.CreateConnection())
//{
//    con.Open();
//    DbCommand selectCommand = db.GetStoredProcCommand("dbo.usp_set_session_context");
//    db.ExecuteReader(selectCommand);


//    DbCommand selectCommand1 = db.GetStoredProcCommand("dbo.usp_get_session_context");
//    using (IDataReader dataReader = db.ExecuteReader(selectCommand1))
//    {
//        while (dataReader.Read())
//        {
//            var data = dataReader["LoginUserAccountName"].ToString();
//           
//           
//        }
//    }
//}

如何保持连接?我不想使用转换范围。

c# sql-server ado.net database-connection
1个回答
0
投票

我已经在 MS Enterprise Library DAAB 工作很久了,你看看这是否能解决你的问题

DbCommand selectCommand = = db.GetStoredProcCommand("dbo.usp_set_session_context");
DbCommand selectCommand1 = = db.GetStoredProcCommand("dbo.usp_get_session_context");

using (DbConnection connection = db.CreateConnection())
{
    connection.Open();
    try
    {
        // Credit the first account.
        db.ExecuteReader(selectCommand);
        IDataReader dataReader = db.ExecuteReader(selectCommand1);
        while (dataReader.Read())
         {
             var data = dataReader["LoginUserAccountName"].ToString();
         }
    }
    catch
    {
        // do any logging here
    }
    finally
    {
        connection.Close();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.