После некоторого гуглинга (хотя я еще не пробовал) вы можете, по крайней мере, сопоставить классы с таблицами в разных базах данных на одном сервере, используя
<class name="..." table="..." schema="database.schema">
...
</class>
в отображении.
Но ИМХО это дерьмовое решение, потому что оно не кажется независимым от сервера.По-видимому, NHibernate просто объединяет значение схемы со значением таблицы при создании запроса - и для большинства серверов «простое размещение базы данных там со схемой» приводит к синтаксису, который работает HAPPENS.НО вы просто не говорите NHibernate «это схема» и «это база данных», чтобы NHibernate мог точно решить, как построить запрос - вы путаетесь с созданием запроса, вставляя контекстные данные там, где они не принадлежат.
ИМХО, NHibernate должен подавлять такие грязные хаки и выдавать исключение, если значение "схемы" содержит.
В любом случае, похоже, нет технической причины, по которой вы не сможетесделайте еще один шаг и используйте schema = "server.database.schema", где "server" - это имя связанного сервера (см., например, http://technet.microsoft.com/de-de/library/ms190479.aspx)
Помимо этого грязного хака,Кажется, каждый рекомендует использовать несколько фабрик сессий.