我不確定如何處理UserDetail類。UserDetail適用於域和聚合?
程序;具有UserAccounts的虛擬帳戶層次結構,該帳戶層次結構只能擁有朝向MainAccount的交易。但是UserAccounts可以進行某種類型的投注,這對賬戶餘額來說是一種盈利/損失。
感覺邏輯有MainAccount作爲數據庫聚合根,作爲賬戶形成的最重要的數據。現在看起來,將UserDetail作爲帳戶聚合的一部分看起來沒問題,但是我甚至可以在創建帳戶之前創建用戶。也許用戶也可能被允許擁有兩個賬戶。那又怎麼樣?
我猜UserDetail可能是隻是一個獨立的集合體。但在這種情況下,如何在加載帳戶聚合時加載相應的UserDetail?
請,如果你有一些解決這個想法,將不勝感激。
順便說一句,我使用FluentNHibernate。
域:
public class MainCashAccount
{
public int Id { get; set; }
public IList<UserCashAccount> UserCashAccounts { get; set; }
public IList<Transaction> UserAccountTransactions { get; set; }
}
public class UserCashAccount
{
public int Id { get; set; }
public UserDetail User { get; set; }
public IList<Bet> Bets { get; set; }
public UserConnection Connection { get; set; } // Not persisted/mapped
}
public class UserDetail
{
public int Id { get; set; }
public string Name { get; set; }
public string LoginName { get; set; }
public string Password { get; set; }
}
其他:
public class UserConnection
{
public TcpClient TcpClient { get; set; }
編輯:
可能的解決方案:(??)
單向
Class UserCashAccountMap
...
HasOne(x => x.User).Cascade.None()
雙向
Class UserDetail
...(as above)
public UserCashAccount Account {get; set;}
Class UserCashAccountMap
...
HasOne(x => x.User).Cascade.None()
Class UserDetail
HasOne(x => x.Account).Cascade.None().Inverse()
..或者參考,而不是HasOne,用於允許每個用戶的多個帳戶。
請注意,如果您使用ID路線,您顯然必須手動加載某個對象。 – 2011-06-07 19:32:10
好吧,我確定這很簡單我只是有一個小腦袋,因爲我從來沒有這樣做過。我理解你是否正確,我可以將一個屬性「UserCashAccount帳戶」添加到UserDetail類,並將其映射爲HasOne(x => x.Account).Cascade.None()?嗯,這會使它成爲雙向的,也許沒有必要.. – bretddog 2011-06-07 19:46:43
或等待..也許我可以在發佈時留下它,並將UserCashAccount的User屬性映射爲HasOne(...)。Cascade.None?這就是所需要的,並會使UserDetail成爲一個單獨的聚合? – bretddog 2011-06-07 19:52:15