我正在逐渐将应用程序从 NH 迁移到 Dapper。我在很多方面都使用了以下策略:
using( var uow=MyUowManager.BeginUoW() ) //obtain a session and open
{
//do some NH sandard stuff
....
//then use Dapper
session.Connection.Query<Dto>(....).ToList(); // Dapper query
}//close session ( and connection )
这在我的代码中很常见,它通常总是有效的,除了在一个函数中“有时”Query
扩展方法内的连接似乎是Closed
在调试器显示它时,就像Open
在进入扩展方法之前一样。它不是调试器幽灵,因为 Dapper 会抛出一个抱怨连接状态的异常。程序是多线程的,但是线程之间当然没有会话/连接共享,并且总是使用调试器检查线程在扩展方法之前和内部是否相同。这怎么会发生?