Cal*_*bHC 8 nhibernate domain-driven-design model aggregate
我正在使用NHibernate建模一个非常基本的ASP.NET MVC应用程序,我似乎陷入了我的设计.这是我模型的草图:
模型1 http://i29.tinypic.com/309614n.jpg
正如你所看到的,这是非常基本的,但我有一些担忧.用户根实体和组织根实体通过两个一对多关系访问同一Organization_Users实体子实体.这似乎不对,我认为我打破了聚合边界.这个模型对我来说很有趣,但我喜欢这个主意,因为我希望有这样的代码:
var user = userRepository.Load(1);
var list = user.Organizations; // All the organizations the user is a part of.
Run Code Online (Sandbox Code Playgroud)
和
var org = orgRepository.Load(1);
var list = org.Users; // All the users in an organization.
Run Code Online (Sandbox Code Playgroud)
表格和角色中的额外数据也将由组织实体使用.这是一个糟糕的设计吗?如果你有任何想法会很棒.我还在试着想一想DDD的想法.谢谢
我曾多次使用与您的第一个模型类似的方法。这种方法的一个问题是,您需要在域中创建一个OganizationUser类来处理域中的角色和标记字段。这会在您的代码中留下类似的内容。
var user = userRepository.Load(1);
var list = user.OrganizationUsers; // All the organizations the user is a part of including their role and flagged values.
var organization = list[0].Organization;
Run Code Online (Sandbox Code Playgroud)
*如果您要经常迭代所有用户组织,您可能希望立即加载Organization实体以及OrganzitionUser
使用您提交的第二个设计,您似乎可以将用户添加到 OrgUserDetails 中,而无需将用户添加到OrganizationUser中。这似乎不是我想要从我的域中支持的事情。