【问题标题】:How do you deal with linktables when using Domain Driven Design and nHibernate?使用域驱动设计和 nHibernate 时如何处理链接表?
【发布时间】:2009-11-18 17:02:12
【问题描述】:

如果您有 Groups、Users、Channels 表以及每两个表之间的链接表,那么您如何在 Domain Driven Design 和 nHibernate 中组织它们? Group 有 UserCollection 和 ChannelCollection,User 有 GroupCollection 和 ChannelCollection,Channel 有 GroupCollection 和 UserCollection?

如果您想将组添加到频道,是否需要保存频道及其所有组?更糟糕的是,将用户添加到频道...保存频道的所有用户需要先加载所有用户,然后添加新用户,然后保存频道(好吧,可能只会保存添加的用户,但你确实需要将它们全部加载...)。或者您会在存储库 AddUserToChannel(User user, Channel channel) 或 AddUserToChannel(User user, int channelId) 中创建一个方法?

【问题讨论】:

    标签: database nhibernate hibernate domain-driven-design linktable


    【解决方案1】:

    是的,不是的。是的:您的 Group 有一个 Channels 集合等。但是延迟加载开始发挥作用。我的理解是,您对必须加载大量记录的大多数担忧都是无效的。即这样说:

    myGroup.Channels.Add(myChannel);
    myChannel.Groups.Add(myGroup);
    

    不会强制加载 myChannel 的组。

    【讨论】:

    • 是的,我认为只有在您使用套装时才会强制加载。这是有道理的,因为它必须检查添加是否成功。
    猜你喜欢
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多