您能为以下方案建议有效的映射吗?两张桌子:
CREATE TABLE "ORDER"
(
"ID" NUMBER(20,0) NOT NULL ENABLE,
"STATUS_ID" NVARCHAR2(10,0)
);
CREATE TABLE "STATUS"
(
"ID" NVARCHAR2(10,0) NOT NULL ENABLE,
"DESCRIPTION" NVARCHAR2(250,0)
);
各自的课程是:
public class Order
{
public virtual Id { get; set; }
public virtual Status { get; set; }
}
public class Status
{
public virtual Id { get; set; }
public virtual Description { get; set; }
}
状态表是属性Proposal.Status
的值对象的静态表,不应该被代码操纵。我希望Order
始终加载状态描述和代码,即Eager Load Proposal.Status
。
我已经阅读了这个Ayende's blog post但是没有完全相同的情况,尽管我认为它很常见。
编辑:注意我正在尝试将此作为Component Map
。
答案 0 :(得分:2)
您正在尝试将具有标识的常规实体映射为组件(值对象)。来自Ayende的帖子:
在DDD中,您有实体和值对象的概念。 后者 是不可变的,没有身份。在NHibernate中,它们被映射为 组件及其字段嵌入在同一个表中 包含实体。
将值类型映射到与父实体相同的表时,应使用组件映射。您可以在documentation中找到有关NHibernate类型的更多信息。
尝试使用引用映射来执行此操作,但您可能会想到use HasOne。