13

Fluent NHibernate を使用しており、2 つのテーブルがあります。

顧客 [ID、名前、LanguageID]

言語 [ID、説明]

次のプロパティを持つ Customer エンティティがあります。ID、名前、LanguageID、言語

私がやりたいことは、Languages テーブルに参加して言語の説明を取得し、それを顧客エンティティの言語プロパティに入れることです。

Join を使用してみましたが、customer テーブルの LanguageID フィールドを使用して Languages テーブルに結合することができません。'ID' を使用したいと思っています。

私のマッピングは次のようになります。

        Table("Customers");
        Not.LazyLoad();
        Id(c => c.ID).GeneratedBy.Assigned();
        Map(c => c.Name);
        Map(c => c.LanguageID);
        Join("Languages", join =>
        {
            join.KeyColumn("ID");
            join.Map(prop => prop.Language).Column("Description");
        });
4

2 に答える 2

1

これまでJoinを使用したことはありませんが、マッピングにCustomerからの外部キーが必要だと思います。

    Table("ScriptActivities");
    Not.LazyLoad();
    Id(c => c.ID).GeneratedBy.Assigned();
    Map(c => c.Name);
    Map(c => c.LanguageID);
    Join("Languages", join =>
    {
        join.KeyColumn("LanguageID");
        join.Map(prop => prop.Language).Column("Description");
    });

追加のために編集:結合マッピングで見つけた最良の例は、Ayendeのブログです。その例から、joinは、マップされたオブジェクトのIDがjoinedテーブルの外部キーであることを期待しているように見えます。スキーマには、マップされたオブジェクトのFKとして結合されたテーブルIDがあるため、結合は機能しません。顧客と言語を組み合わせたビューを作成し、それをマッピングすることをお勧めします。

于 2010-02-11T20:49:57.253 に答える