NHibernate:连接丢失后恢复会话

我在WPF客户端应用程序中使用NHibernate和SQL Server 2005。

如果我手动停止SQL Server服务然后重新启动它会话不会自动重新连接。

到目前为止,我正在做这个女巫似乎工作:

try { using (ITransaction transaction = this.Session.BeginTransaction()) { // some select here } }catch(Exception ex) { if(this.Session.Connection.State == ConnectionState.Closed) { try { this.Session.Connection.Open(); } catch (Exception) { } } } 

有没有更好的办法 ?

NHibernate不会为您处理连接丢弃。 对于偶尔连接的这种情况,我会考虑使用本问题中建议的本地数据库,然后使用Microsoft Sync Framework同步本地和中央数据库。 另请参阅此相关问题 。

如果服务器刚停止,我认为还有其他问题。 我没有任何WPF经验,但是有很多与nhibernate / WPF( SO查询 )有关的问题。

如果数据库连接有时会丢失,您可以查看UnitOfWork模式。