Логика сообщений сопоставления NHibernate - PullRequest
0 голосов
/ 15 сентября 2011

Я создал несколько классов, которые представляют логику моих сообщений:

  • Сообщение - представление сообщения THE:)
  • MessageBoxBase - базовый класс для всех 3 типов ящиков сообщений

  • MessageInbox - представляет входящие

  • MessageOutbox - представляет исходящие
  • MessageCustombox - пользовательское окно сообщений
  • MessageBoxItem - элемент сообщенияв любом окне сообщения с такими данными, как IsReaded и т. д.
  • MessageBoxCollection - Коллекция почтовых ящиков - Входящие, Исходящие и Список пользовательских ящиков - только эти 3 свойства.

Наконец, в моем объединенном корневом пользователеиметь MessageboxCollection, и я могу использовать его примерно так:

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

Diagram of that classes

У меня сейчас нет какой-либо структуры БД, и я открыт для предложения, но я думалПримерно так:

  • MessageInInbox - UserId, MessageId, IsReaded и т. д.
  • MessageInOutBox - То же, что в Inbox
  • MessageInCustomBox -UserId, MessageId, CustomBoxId и т. Д.
  • CustomBox - BoxId, UserId, BoxName и т. Д.
  • Сообщение - обычная строка сообщения, тема, содержимое, автор и т. Д.

Я уверен, что я не хочу создавать в строке БД для каждой папки «Входящие / Исходящие» для каждого пользователя, как в случае с CustomBox (что-то вроде ненужного словаря для входящих и исходящих сообщений для пользователя).

И в этой точке у меня проблема - как, черт возьми, отобразить это ?:)

Есть предложения?Может, мой домен дерьмовый?Я жду твоего ответа:)

1 Ответ

0 голосов
/ 16 сентября 2011

Существует более простое решение, состоящее в том, что у вас есть только две таблицы базы данных, называемые сообщениями и ящиками.

Сообщения - (Id, IsRead, Тема, Сообщение, Отправитель, UserId, BoxId)

Ящики - (Id, Name, UserId)

Это решение теперь позволяет пользователю иметь несколько пользовательских блоков, и ему всегда должны быть созданы значения по умолчанию для него. А объектная модель может быть «Пользователь» имеет список ящиков, а каждый ящик имеет список сообщений.

...