0
请你帮我找出了以下问题更好的解决方案...... 有一个在我的域模型的层次:转换类型与NHibernate亚型/休眠
class Document {
Int Id;
String Title;
}
class Agreement : Document {
DateTime Signed;
}
持久的策略是表每类。即2表:“文档”(Id,...)和“协议”(Fk_document,...)
第一个操作是文档注册。此时我不知道文件的真实类型。所以我创建了新的文档并填写了它的属性“标题”。
过了一段时间后,我收到附加信息。根据它,以前登记的文件实际上是在某个日期签署的协议。现在我可以填写“签署协议”的财产。
但要做到这一点,有必要以某种方式将类型从文档转换为协议。我能做出这样的SQL呼叫:
INSERT INTO AGREEMENTS (FK_DOCUMENT, SIGNED_DATE) VALUES (1111111, TO_DATE('01-01-2000'))
(其中“1111111”是标识,其休眠分配,同时节省它第一次记录)
我相信这是不是最好的办法了!但我找不到其他人... 谢谢!
(我想出了这个例子,真正的用例是相当困难的,我不想拖累的问题。文件必须尽快保存)
谢谢!总的来说,我同意你的看法。在未来的版本中,我将添加一个类似于类别的模型。因此Document会包含一个类似AgreementCategory的属性,其中包含协议的属性。这将是一种架构决定。但现在的问题是 - 如何用Nhibernate方法“改变班级”(如果可能的话)。 – barser 2010-12-10 06:37:58