2009-03-31 6 views
4

Background:Добавление отображения nHibernate во время выполнения?

У меня возникает ошибка отображения при попытке использования nHibernate. Приложение состоит из нескольких сборок. Одна из сборников - это библиотека полезных подпрограмм, а другая - код приложения, в котором используется библиотека. Библиотечная сборка добавляет себя в конфигурацию nHibernate, но поскольку она не знает о других сборках, она не добавляет их. Файл сопоставления xml находится в сборке приложения. Я думаю, что он не находит его, потому что он не смотрит в сборку приложений.

Вопрос: Можете ли вы сопоставить класс с произвольной сборкой, не добавляя ее в конфигурацию?

Если нет, можете ли вы добавить отображение во время выполнения?

С благодарностью

p.s. я сделал убедитесь, что файл сопоставления был отмечен как внедренный ресурс


Update - 3 апр '09

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

ответ

7

Вы можете добавить отображения во время выполнения в момент сеанса завод строится:

ISessionFactory sf = new Configuration() 
    .AddFile("Item.hbm.xml") 
    .AddFile("Bid.hbm.xml") 
    .BuildSessionFactory(); 

или с сборками:

ISessionFactory sf = new Configuration() 
    .AddAssembly("NHibernate.Auction") 
    .BuildSessionFactory(); 
+1

Спасибо :) Я видел этот вариант, к сожалению, этот код находится в сборке библиотеки. Он не знает о других собраниях или отображениях в них. Можете ли вы добавить их после того, как ваша сессия будет построена/открыта? – Jay

3

Re ваш комментарий - нет, вы не можете добавлять отображения, как только вы построили вашей фабрики сеансов. Однако вы можете воссоздать фабрику сеансов. Имейте в виду, что это может быть дорогостоящая операция (секунда или около того).

+0

Спасибо, это помогает, подтверждая, что я думал :) – Jay

Смежные вопросы