2011-09-15 42 views
0

我提出,表示我的消息的邏輯有些類:NHibernate的映射消息邏輯

  • 消息 - 消息:)
  • MessageBoxBase的表示 - 對於所有3種的MessageBox的基類

  • MessageInbox - 代表收件箱

  • MessageOutbox - 代表發件箱
  • MessageCustombox - 用戶定義的消息框
  • MessageBoxItem - 任何消息框中的消息項,其中包含IsReaded等數據。
  • MessageBoxCollection - 收件箱 - 收件箱,發件箱和自定義框列表 - 僅限於3個屬性。
  • 在我agregate根用戶

終於有MessageboxCollection,我可以稍微用它這樣的:

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

Diagram of that classes

我沒有任何數據庫的結構,現在,我打開但我正在考慮這樣的事情:

  • MessageInInbox - UserId,MessageId,IsReaded等
  • MessageInOutBox - 同在Inbox
  • MessageInCustomBox - 用戶ID,的MessageId,CustomBoxId等
  • CustomBox - BoxId,用戶ID,BoxName等
  • 消息 - 平原消息行,主題,內容,作者等。

一個我敢肯定的是,我不希望在DB行每個收件箱/發件箱爲每個用戶創建像它在CustomBox情況下(類似不必要的字典收件箱和每個用戶的發件箱)。

而在這一點上我有一個問題 - 地獄怎麼地圖,? :)

有什麼建議嗎?也許我的域名很糟糕?我在等待你的迴應:)

回答

0

有一個更簡單的解決方案,就是你只有兩個數據庫表,稱爲消息和框。

消息 - (同上,IsRead,主題,郵件,發件人,用戶ID,BoxId)

箱 - (ID,姓名,用戶ID)

該解決方案現在允許用戶有幾個定製箱他應該始終爲他創建默認值。對象模型可以是用戶有一個框的列表,每個框都有一個消息列表。

+0

就像我說的 - 我不會在DB中創建「默認」框。 – mgibas