Как получить конфигурацию NHibernate от ISessionFactory - PullRequest
3 голосов
/ 18 октября 2011

Есть ли способ получить сведения о конфигурации из экземпляра ISessionFactory в NHibernate?

Ответы [ 4 ]

2 голосов
/ 18 октября 2011

ISessionFactory не предоставляет конфигурацию, которая использовалась для создания фабрики сеансов, и я не уверен, что конкретная реализация также делает.

Однако, почему бы вам не рассмотреть возможность внедрения конфигурации? Может быть, вы не используете внедрение зависимостей, если вы это делаете, просто зарегистрируйте его в ядре.

В противном случае рассмотрите возможность использования класса-обертки, который хранит как конфигурацию, так и ISessionFactory.

1 голос
/ 11 июля 2013

Я написал класс расширения, который отображает фабрику сеансов и конфигурацию через хеш-таблицу. И вы можете легко получить конфигурацию для фабрики сеансов в любом месте вашего кода, но вы должны сначала установить конфигурацию для фабрики.

public static class SessionFactoryConfigurationBindingExtension
{
    private static readonly Dictionary<ISessionFactory, Configuration> _mappings = new Dictionary<ISessionFactory, Configuration>();
    private static readonly Object _mappingsLocker = new Object();

    public static Configuration GetConfiguration(this ISessionFactory sessionFactory)
    {
        lock (_mappingsLocker)
        {
            if (_mappings.ContainsKey(sessionFactory))
            {
                return _mappings[sessionFactory];
            }
            else
            {
                return null;
            }
        }
    }

    public static void SetConfiguration(this ISessionFactory sessionFactory, Configuration configuration)
    {
        lock (_mappingsLocker)
        {
            _mappings[sessionFactory] = configuration;
        }
    }
}
1 голос
/ 18 октября 2011

Если вы используете app.config или hibernate.xml.cfg, я использую следующее для выставления конфигурации:

NHibernate.Cfg.Configuration normalConfig = new NHibernate.Cfg.Configuration().Configure();

Я передаю вышеупомянутое, когда я настраиваю свою фабрику сеансов, и я просто представляю этот объект конфигурации в своем статическом классе фабрики сеансов.

0 голосов
/ 14 апреля 2014

Из сессии я использую следующее Session.Connection.ConnectionString;

Мой класс UserIO : Base<User> Пользователь является сущностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...