NHibernate连接表映射具有重复的对象

时间:2012-08-18 19:02:45

标签: c# nhibernate fluent

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

分类

CategoryId
ParentId

区域设置

LocaleId
LocaleCode

CategoryLocale

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对象中使用Locale属性。正确的价值。

1 个答案:

答案 0 :(得分: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")
}