我需要一个映射策略使用的指导

时间:2011-07-05 14:10:23

标签: nhibernate fluent-nhibernate

我正在撰写发送电子邮件通知的流程。目前,我在一个表格中写下电子邮件通知,其中包含以下列:

  • email_notification_id => PK
  • notification_id =>通知
  • sender_id =>用户或组对象
  • recipient_id =>用户或组对象

发件人和收件人可以是User或Group类型。显然,目前我不能为发件人或收件人提供FK。

1)第一个选项是在映射中使用Any,并为该类型添加两个附加列。

2)第二个选项是为每个组合创建4个类,并使用鉴别器映射它们:

class1 =>类型组的发件人,类型组的收件人
class2 =>类型为Group的发件人,类型为User的收件人 class3 =>用户类型的发件人,类型为组的收件人
class4 =>用户类型的发件人,用户类型的收件人

3)其他选择?

您如何看待这个?

最好的问候

2 个答案:

答案 0 :(得分:1)

如果是我并且我控制了数据库,我会将两列 sender_id recipient_id 更改为发件人收件人即可。这些字符串字段包含您打算使用的原始电子邮件地址。

这只是另一种方法。就数据库设计而言,不一定是最好的,但从实现和映射的角度来看,这一点很简单。

答案 1 :(得分:0)

您还可以创建一个EmailEntityBase(或者您可能找到的更好的词组)类,GroupUser将继承该类。 然后,您的Notification实体会引用EmailEntityBase发件人和收件人属性。