0

次のシナリオで有効なマッピングを提案できますか? 2 つのテーブル:

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

コンポーネント (値オブジェクト) として ID を持つ通常のエンティティをマップしようとしています。Ayende の投稿から:

DDD では、エンティティと値オブジェクトの概念があります。後者は不変であり、同一性を持ちません。NHibernate では、これらはComponent としてマップされ、そのフィールドは含まれるエンティティと同じテーブルに埋め込まれます

値の型を親エンティティと同じテーブルにマッピングする場合は、コンポーネント マッピングを使用する必要があります。NHibernate の型の詳細については、ドキュメントを参照してください。

HasOneを使用したくなるかもしれませんが、代わりに References マッピングを使用して実行してみてください。

于 2012-10-03T09:42:15.610 に答える