我需要设计具有两个简单实体的域:
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; }
...
}
在域世界中一切都很好而且很清楚,但问题是 User 和 Country 在两个不同服务器上的两个不同数据库中持久存在(它们都是 MSSQL 2005 服务器)。
那么,我应该如何正确地在 NHibernate 中跨不同的 sql 服务器实现实体的持久性?
在引用中使用 ID 而不是对象?是的,这很简单,但它对整个域的影响很大,使域对象更像 DTO。并且它将要求 IUserRepository 掌握 ICountryRepository 以加载用户实体。
链接服务器?嗯...不知何故我不喜欢它(分布式事务和没有 XML 列)。在使用它们时我应该注意什么,更重要的是我应该如何配置 NHibernate 以有效地与链接服务器一起工作?
也许其他一些解决方案?