Я не уверен, что делать с классом UserDetail.
Программа; Виртуальная иерархия учетных записей, с учетными записями пользователей, которые могут иметь транзакции только к основному счету.Но 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()
Bi-Directional
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, для разрешения нескольких учетных записей для пользователя.