Сопоставление свойств между двумя базами данных с использованием архитектуры Fluent NHibernate

#nhibernate #fluent-nhibernate #s#arp-architecture

#nhibernate #fluent-nhibernate #s # arp-архитектура

Вопрос:

У меня есть сценарий, в котором у меня есть новое приложение, созданное с использованием архитектуры NHibernate и S # arp. Это приложение интегрируется в устаревшее приложение, которое не использует NHibernate. Для устаревших и новых приложений будут созданы отдельные базы данных. Я могу успешно считывать объекты из обеих баз данных, используя два заводских ключа S # arp NHiberate (как подробно описано здесь). Все это отлично работает. Моя проблема заключается в том, что я хочу сопоставить свойство из класса в моем новом приложении с объектом в устаревшей базе данных. Рассмотрим следующий сценарий:

 public class NewUser
{
    public virtual LegacyUser LegacyUser { get; set; }
}

public class LegacyUser
{
    public virtual string UserName { get; set; }
}
  

Я могу прочитать свои объекты NewUser, но при попытке сослаться на свойство LegacyUser я получаю сообщение об ошибке:

 System.Data.SqlClient.SqlException: Invalid object name 'NewSchema.LegacyUser'.
  

Я подозреваю, что это происходит потому, что сеанс, который извлекает объекты NewUser, ничего не знает о сеансе, который требуется для чтения старых пользовательских объектов. Заводской ключ сеанса обычно определяется репозиторием S # arp.

Я пытался указать схему в сопоставлении, но это тоже не работает.

 mapping.Schema("OldSchema");
  

Вопрос: Есть ли какой-либо способ указать в сопоставлении Fluent NHibernate, что когда объект NewUser пытается прочитать объект LegacyUser, ему необходимо использовать другую фабрику сеансов? Или мне нужно вручную считывать объекты из устаревшей базы данных и вставлять их в мои новые классы?

Заранее спасибо!