2 つの単純なエンティティを持つドメインを設計する必要があります。
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; }
...
}
ドメインの世界ではすべてが明確ですが、問題は、ユーザーと国が2つの異なるサーバー上の2つの異なるデータベースに保持されていることです(両方ともMSSQL 2005サーバーです)。
では、NHibernate の異なる SQL サーバー間でエンティティの永続性を正しく実装するにはどうすればよいでしょうか?
参照でオブジェクトの代わりに ID を使用しますか? ええ、それは簡単ですが、ドメインオブジェクトをDTOのようにすることで、ドメイン全体に大きな打撃を与えています。また、Userエンティティをロードするには、IUserRepositoryがICountryRepositoryを手に入れる必要があります。
リンクされたサーバー?うーん...どういうわけか私はそれが好きではありません (分散トランザクションと XML 列なし)。そして、それらを使用する場合に注意すべきことと、さらに重要なことに、リンクサーバーで効果的に動作するようにNHibernateを構成するにはどうすればよいですか?
多分他の解決策?