【发布时间】:2018-07-14 21:17:55
【问题描述】:
我在执行我的源代码时遇到了这个错误。但我在互联网上获得的信息似乎并不多。因此,我希望可以从这里的专业人士那里得到一些线索。
源代码
public List<string> GetData (List<long> Id)
{
List<string> data;
string sql = "select * from tblSample with(nolock) where SampleId in @sampleId";
Dapper.DynamicParameters param = new Dapper.DynamicParameters();
param.Add("@sampleId", Id);
try
{
data = this.queryrunner.QueryList(sql, param);
}
catch (Exception ex)
{
logger.Error(ex.Message, ex);
}
return data;
}
QueryRunner 类方法
private void OpenConnection()
{
if (this.conn.State != ConnectionState.Open)
{
this.conn.Open();
}
}
public List<t> QueryList(String sql, DynamicParameters param)
{
List<t> t;
try
{
OpenConnection();
t = this.conn.Query<t>(sql, param).ToList();
}
catch (System.Data.SqlClient.SqlException ex)
{
logger.Debug(ex.Message, ex);
LogSqlErrorException(this.conn.Database, sql, param);
throw;
}
finally
{
CloseConnection();
}
return t;
}
这是错误日志的一部分:-
System.InvalidOperationException:当前的 TransactionScope 已经完成。
在 System.Transactions.Transaction.get_Current()
在 System.Data.ProviderBase.DbConnectionPool.GetFromTransactedPool(事务和事务)
在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,布尔 allowCreate,布尔 onlyOneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal& 连接)
在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)1 重试,DbConnectionOptions userOptions,DbConnectionInternal oldConnection,DbConnectionInternal& 连接)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
在 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection externalConnection,DbConnectionFactory connectionFactory,TaskCompletionSource1 retry, DbConnectionOptions userOptions)1 重试,DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource
在 System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1 retry)1 重试)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
在 System.Data.SqlClient.SqlConnection.Open()
【问题讨论】:
-
贴一些代码老兄!
-
您很可能在交易关闭后尝试使用交易,但如果没有相关代码,House MD 将无法诊断异常
-
我已经用源代码更新了我的帖子。
-
异常发生在哪一行
-
调用
this.queryrunner.QueryList(sql, param);>OpenConnection();>this.conn.Open();时抛出异常
标签: c# sql-server exception invalidoperationexception