1

我正在尝试映射三个表之间的关系。

类别

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 是正确的并返回所有可能的组合,但是映射有重复,所以我不是三个不同的语言环境,而是在相同的语言环境下三次获得相同的类别。

有任何想法吗?

我有一个 CategoryLocale 对象,它映射到一个类别和一个在 CategoryName 被放置在 CategoryLocale 下时起作用的语言环境,但是我需要正确填写它自己的 Category,或者在 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 回答