0

您能否为以下场景建议一个有效的映射。两张表:

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 的博客文章,但没有完全相同的场景,尽管我相信它很常见。

编辑:注意我正在尝试将其作为Component Map.

4

1 回答 1

2

您正在尝试将具有身份的常规实体映射为组件(值对象)。来自 Ayende 的帖子:

在 DDD 中,您有实体和值对象的概念。后者是不可变的,没有身份。在 NHibernate 中,它们被映射为 Component ,并且其字段嵌入到与包含实体相同的表中

当您将值类型映射到与父实体相同的表时,应使用组件映射。您可以在文档中找到有关 NHibernate 类型的更多信息。

尝试使用 References 映射来实现,尽管您可能很想使用 HasOne

于 2012-10-03T09:42:15.610 回答