2

Fluent NHibernate に関する質問があります。1 つのエンティティを複数のテーブルにマッピングするスキーマを説明することはできません。データベースには次の構造があります。

Create table CeTypes (Id int not null PRIMARY KEY, Name nvarchar(100) not null)
Create table CeValues (Id int not null PRIMARY KEY, Name nvarchar(100) not null)
Create table Ces (Id int not null PRIMARY KEY, CeType_id int not null FOREIGN KEY REFERENCES CeTypes(Id), CeValue_id int not null FOREIGN KEY REFERENCES CeTypes(Id))

次のエンティティがあります。

public class Ce
{
     public virtual int Id { get; set; }
     public virtual string Type { get; set; }
     public virtual string Value { get; set; }
}

ドメイン内の CeType、CeValue エンティティは存在しません。マッピング Ce エンティティの記述方法がわかりません。

説明しようとしました:

public class CeMap : ClassMap<Ce>
{
    public CeMap()
    {
        Table("Ces");
        Id(c => c.Id);

        Join("CeTypes", m => m.Map(ce => ce.Type).Column("Name"));
        Join("CeValues", m => m.Map(ce => ce.Value).Column("Name"));
    }
}

ただし、このようなスキーム CeType では、CeValue テーブルにフィールド Ce_id が必要です。データベースの現在の構造の下でスキーム マッピングをどのように説明できますか?

4

1 に答える 1

0

最初に nHibernate を使い始めたときに同じことをしようとしましたが、それを行う方法が見つかりませんでした。複数のテーブルを単一のオブジェクトにマップできるとは実際には信じていません。通常、テーブルごとに 1 つのエンティティがあります。各エンティティはテーブルにマップされ、それらの間に参照/多くのリンクがあります。

データベースへのマッピングがより簡単になるため、長期的にはテーブルごとに 1 つのエンティティを使用する方がよいことがわかるでしょう。

于 2013-02-22T16:11:16.650 に答える