我不确定如何处理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