NHibernate映射消息逻辑

时间:2011-09-15 19:43:16

标签: nhibernate nhibernate-mapping

我创建了一些代表我的消息逻辑的类:

  • 消息 - 消息的表示:)
  • MessageBoxBase - 所有3种消息框的基类

  • MessageInbox - 代表收件箱

  • MessageOutbox - 代表发件箱
  • MessageCustombox - 用户定义的消息框
  • MessageBoxItem - 任何消息框中的消息项,包含IsReaded等数据
  • MessageBoxCollection - 消息框的集合 - 收件箱,发件箱和CustomBoxes列表 - 仅有3个属性。

最后在我的agregate root用户有MessageboxCollection,我可以使用它有点像:

myUser.MessageBoxes.Inbox.Add(...)
myUser.MessageBoxes.Outbox.Items....

Diagram of that classes

我现在没有任何数据库结构,而且我对消化很开放,但我在想这样的事情:

  • MessageInInbox - UserId,MessageId,IsReaded等。
  • MessageInOutBox - 与收件箱中的相同
  • MessageInCustomBox - UserId,MessageId,CustomBoxId等
  • CustomBox - BoxId,UserId,BoxName等。
  • 消息 - 明文消息行,主题,内容,作者等。

我敢肯定的是,我不想为每个用户创建每个收件箱/发件箱的数据库行,就像它在CustomBox案例中一样(对于每个用户的收件箱和发件箱,类似于不必要的字典)。

在这一点上我有一个问题 - 如何映射? :)

有什么建议吗?也许我的域名很糟糕?我在等你的回复:))

1 个答案:

答案 0 :(得分:0)

有一个更简单的解决方案,即您只有两个名为消息和框的数据库表。

消息 - (Id,IsRead,主题,消息,发件人,UserId,BoxId)

方框 - (Id,Name,UserId)

此解决方案现在允许用户拥有多个自定义框,并且应该始终为他创建默认框。对象模型可以是用户有一个Box列表,每个框都有一个消息列表。