我需要設計有兩個簡單的實體領域:如何設計與實體引用實體域與NHibernate另一個SQL Server上的持久性
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服務器)。
那麼,應該如何我正確地實施NHibernate的在不同的SQL Server的entites的持久性?
使用ID而不是在引用的對象?是的,這很簡單,但它在整個領域的事情上更加努力,讓域對象更像DTO。並且它將要求IUserRepository在ICountryRepository上獲取它以加載用戶實體。
鏈接服務器?嗯......不知怎的,我不喜歡它(分佈式事務和沒有XML列)。而且我應該知道如何使用它們,更重要的是,我應該如何配置NHibernate以便與鏈接的服務器有效地協作?
也許一些其他的解決辦法?
嗯...只是爲了澄清:NCommon將允許我transperently映射實體,我不會改變我的域模型或否,它不能這樣工作,我將不得不將國家實體更改爲countryId值對象? –
使用NCommon,您仍然需要將Country更改爲CountryID並只存儲標識符。我會解釋爲什麼在一個更新的答案。 – HackedByChinese
好的,我明白了。但是這種改變會如何幫助我使用NCommon?如果我理解正確,我仍然需要從不同的存儲庫手動加載國家實體 - 我可以做到這一點,沒有NCommon。 –