Свободная внешняя конфигурация Nhibernate - PullRequest
0 голосов
/ 03 июня 2010

Все примеры беглого nhibernate делают такой (или похожий) вызов:

c.AddMappingsFromAssembly(typeof(Product).Assembly);

Я не хочу использовать "typeof (Product) .Assembly", поскольку я не хочу, чтобы здесь была ссылка на мой проект домена (класс "Procuct") В обычном NHibernate я просто создал бы файлы hbm.xml и сделал бы следующую запись в web.config:

  <mapping assembly="TestingFluentHN"/>

но эта запись не работает с FluentNHibernate. Есть ли элегантный способ предоставления сборок в моем методе построения сеанса? Желательно из конфигурационного файла.

Ресурсы : Контекст нежелательного кода / зависимости:

static NHSessionManager()
{
    Configuration c = new Configuration();
    //change following to sth that does not need refernce to domain
    c.AddMappingsFromAssembly(typeof(Product).Assembly);
    c.Configure();      
    sessionFactory = c.BuildSessionFactory();
}

Моей первой идеей было прочитать имена сборок из appSettings и загрузить их:

var assembliesToMap = new List<string>();
foreach (var assemblyName in assembliesToMap)
{
    var assembly = Assembly.LoadFile(assemblyName);
    c.AddMappingsFromAssembly(assembly);
}

но это мой последний вариант. Я ищу что-то в беглом nhibernate.

1 Ответ

1 голос
/ 03 июня 2010

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

Я не уверен, что просто не правильно представляю, как устроено ваше приложение, но сама идея кажется немного ошибочной. Вам все равно потребуется зависимость от объектов домена для запроса сеанса, и, вероятно, это будет в той же сборке, что и при создании фабрики сеанса. Если нет, вы можете рассмотреть возможность использования внедрения зависимостей для предоставления менеджера сеансов (из проекта, осведомленного о объектах домена ).

Если я что-то упустил, пожалуйста, дайте мне знать.

...