我正在尝试映射三个表之间的关系。
分类
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属性。正确的价值。
答案 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")
}