我是NHibernate的全新功能 - 直到我尝试将它应用于我们在工作中使用的Oracle 10g数据库中的一个更常见的构造时,它才运行良好。NHibernate将一个属性映射到另一个表中的列
我想有一个域对象如下:
public class SentEmailHistory
{
public virtual int Id { get; set; }
public virtual string EmailAddress { get; set; }
...
}
我与实际上看起来像使用的数据库如下:
SEND_EMAIL_HIST
================
SEND_EMAIL_HIST_ID (PK)
EMAIL_ADDR_ID (FK to EMAIL_ADDR)
...
EMAIL_ADDR
============
EMAIL_ADDR_ID (PK)
EMAIL_ADDR (AK1)
我不希望有改变我的代码任何方式只是因为数据库拆分了我的代码没有附加的表;我不相信“电子邮件地址”证明另一个域名实体是正当的。
如果可能,我宁愿只更新我的hibernate映射。否则,是否可以对数据库进行任何非强制更新?
更新
从我所看到的,联接语法不会真的支持我在做什么,使用应该在我上述EMAIL_ADDR
表中找到现有的电子邮件地址时尤其如此。我可以向NHibernate提供原始插入/更新查询吗?或者也许是可更新的观点唯一的出路?
嗯,这不是我想要的。对不起,通过离开“SentEmailHistory”的PK,我可能引起了混淆。我会更新我的答案。不过谢谢! – 2011-05-22 15:18:30
谢谢你这个问题 - 似乎是一个类似的问题。我也同意“在大多数情况下,你的对象模型应该比数据库模型更细粒度”,但在这种情况下,存储一个字符串的对象感觉有点极端。 – 2011-05-22 15:43:41