1

3 つのテーブル間の関係をマップしようとしています。

カテゴリー

CategoryId
ParentId

ロケール

LocaleId
LocaleCode

カテゴリロケール

ID
LocaleId
CategoryId
CategoryName

構造を持つオブジェクトもあります

カテゴリー

CategoryId
CategoryName
ParentId

これが私のマッピングです

public CategoryMap()
    {

        Id(x => x.CategoryId);           
        Map(x => x.ParentId);            
        Join("CategoryLocale", m =>
        {               
            m.KeyColumn("CategoryId");
            m.Map(x => x.CategoryName);
            m.References(x => x.Locale,"LocaleId");
        });
    }

クエリは単純です

var query = session.QueryOver<Category>();

適切な量​​のカテゴリが返され、生成された SQL は正しく、考えられるすべての組み合わせを返しますが、マッピングには重複があるため、3 つの異なるロケールではなく、同じロケールで同じカテゴリを 3 回取得します。

何か案は?

カテゴリにマップされた CategoryLocale オブジェクトと、CategoryName が CategoryLocale の下に配置されたときに機能するロケールがありましたが、カテゴリ自体を正しく入力するか、Category オブジェクトの Locale プロパティに正しい値を指定する必要があります。

4

1 に答える 1

0

どうですか

public class Category
{
    public virtual IDictionary<Locale, string> Names { get; private set; }

    public virtual string Name { get { return Names[GetActiveLocaleFromSomewhere()]; } }
}

public CategoryMap()
{
    HasMany(x => x.Names)
        .Table("CategoryLocale")
        .KeyColumn("CategoryId")
        .AsEntityMap("LocaleId")
        .Element("CategoryName")
}
于 2012-08-19T20:19:22.027 に答える