我们正在使用 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();
//
//
// }
// }
//}
如何保持连接?我不想使用转换范围。
我已经在 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();
}
}