已添加具有相同密钥的项目。以下方法是否正确?

问题描述:

我知道这是一个重复的帖子,但我的上下文不同。 我从here经历了这个问题的解决方案。 我一些如下如何变化:已添加具有相同密钥的项目。以下方法是否正确?

private static Mutex _sessionMutex = new Mutex(); 
    public void OpenMySessionFactory(string conStr) 
     { 
      try 
      { 
       _sessionMutex.WaitOne(); 
       config = Fluently.Configure() 
       .Database(MySQLConfiguration.Standard.ConnectionString(conStr)) 
       .Mappings(m => m.FluentMappings.AddFromAssembly(System.Reflection.Assembly.GetExecutingAssembly())) 
       .BuildConfiguration(); 
       sessionFactory = config.BuildSessionFactory(); 
       _sessionMutex.ReleaseMutex(); 
      } 
      catch (Exception) 
      { 
       throw; 
      } 
     } 

是否有任何影响,如果我如上实施?后面的错误

原因:

具有相同键的项已被添加

当我双击具有使用功能NHibernate做数据访问的东西任何按钮是发生。

请注意,如果发生异常,您将永远无法解锁互斥锁(控件将跳转到catch块并跳过解锁)。使用finally块来执行此操作:

public void OpenMySessionFactory(string conStr) 
{ 
    _sessionMutex.WaitOne(); 
    try 
    { 
     config = Fluently.Configure() 
     .Database(MySQLConfiguration.Standard.ConnectionString(conStr)) 
     .Mappings(m => m.FluentMappings.AddFromAssembly(System.Reflection.Assembly.GetExecutingAssembly())) 
     .BuildConfiguration(); 
     sessionFactory = config.BuildSessionFactory(); 
    } 
    catch (Exception) 
    { 
     throw; 
    } 
    finally 
    { 
     _sessionMutex.ReleaseMutex(); 
    } 
}