Мне нужно спроектировать домен, который состоит из двух простых объектов:
public class User
{
public virtual int Id { get; protected set; }
public virtual string Email { get; protected set; }
public virtual Country Country { get; protected set; }
...
}
public class Country
{
public virtual int Id { get; protected set; }
public virtual string Name { get; protected set; }
...
}
Все это хорошо и ясно в доменном мире, но проблема в том, что пользователь и страна сохраняются в двух разных базах данных на двух разных серверах (хотя они оба являются серверами MSSQL 2005).
Итак, как мне правильно реализовать постоянство сущностей на разных серверах sql в NHibernate?
Использование идентификаторов вместо объектов в ссылках? Да, это просто, но это сильно бьет по всему домену, делая объект домена более похожим на DTO. И для этого потребуется, чтобы IUserRepository получил доступ к ICountryRepository для загрузки сущности пользователя.
Связанные серверы? Хм... Что-то мне это не нравится (распределенные транзакции и отсутствие столбцов XML). И что я должен знать в случае их использования и, что более важно, как мне настроить NHibernate для эффективной работы с подключенными серверами?
Может какое другое решение?