Элемент с тем же ключом уже добавлен - PullRequest
3 голосов
/ 13 марта 2010

Может кто-нибудь посоветовать мне, как предотвратить эту ошибку. Элемент с тем же ключом уже добавлен .?

//  Failed to find a matching SessionFactory so make a new one.
        if (sessionFactory == null)
        {
            Check.Require(File.Exists(sessionFactoryConfigPath),
                          "The config file at '" + sessionFactoryConfigPath + "' could not be found");

            Configuration cfg = new Configuration();
            cfg.Configure(sessionFactoryConfigPath);

            /*MINE*/
            var persistenceModel = new PersistenceModel();
            persistenceModel.AddMappingsFromAssembly(Assembly.Load("EMedicine.Core"));
            persistenceModel.Configure(cfg);
            /*END_OF_MINE*/

            //  Now that we have our Configuration object, create a new SessionFactory
            sessionFactory = cfg.BuildSessionFactory();

            if (sessionFactory == null)
            {
                throw new InvalidOperationException("cfg.BuildSessionFactory() returned null.");
            }

            if (sessionFactoryConfigPath != null) sessionFactories.Add(sessionFactoryConfigPath, sessionFactory);
        }

Ошибка здесь: sessionFactory = cfg.BuildSessionFactory ();

Ответы [ 2 ]

2 голосов
/ 13 марта 2010

Попробуйте следующее:

if (
    sessionFactoryConfigPath != null && 
    sessionFactories.ContainsKey(sessionFactoryConfigPath)
) {
    sessionFactory = cfg.BuildSessionFactory();

    if (sessionFactory == null)
    {
        throw new InvalidOperationException("cfg.BuildSessionFactory() returned null.");
    }

    sessionFactories.Add(sessionFactoryConfigPath, sessionFactory);
} else (sessionFactoryConfigPath != null) {
    sessionFactory = sessionFactories[sessionFactoryConfigPath];
}
0 голосов
/ 13 марта 2010

Это решение в порядке?

try
                    {
                        //  Now that we have our Configuration object, create a new SessionFactory
                        sessionFactory = cfg.BuildSessionFactory();

                        if (sessionFactory == null)
                        {
                            throw new InvalidOperationException("cfg.BuildSessionFactory() returned null.");
                        }

                        if (sessionFactoryConfigPath != null)
                            sessionFactories.Add(sessionFactoryConfigPath, sessionFactory);
                    }
                    catch (Exception)
                    { 
                        if (sessionFactoryConfigPath != null)
                            sessionFactory = (ISessionFactory) sessionFactories[sessionFactoryConfigPath];
                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...