我有一些问题在fluentnhibernate中映射复杂的多对多关系。我有一个遗留数据库,看起来像这样:
Foos:| Id | Foo |
FooBars:| FooId | BarId |
酒吧:| Id |酒吧| CultureId |
我试图映射到以下对象模型:
class Foo
{
property virtual int Id { get; set; }
property virtual string Foo { get; set; }
property virtual IList<Bar> Bars { get; set; }
}
class Bar
{
property virtual int Id { get; set; }
property virtual int CultureId { get; set; }
}
使用映射:
public class FooMapping : ClassMap<Foo>
{
public FooMapping()
{
Table("foos");
Id(v => v.Id);
Map(v => v.Foo);
HasManyToMany(v => v.Bars)
.Table("FooBars")
.ParentKeyColumn("FooId")
.ChildKeyColumn("BarId")
.Cascade.All();
}
}
public class BarMapping : ClassMap<Bar>
{
public BarMapping()
{
Table("bars");
Id(v => v.Id);
Map(v => v.Bar);
Map(v => v.CultureId);
}
}
问题是我有多个Bar,其中不同的CultureIds具有相同的ID
e.g。
我会有一张看起来像的表:
ID |酒吧| CultureId
1,你好,1
1,Bonjour,2
1,Gutentag,3
目前,上表的Bars属性将返回3个元素,但其上的Bar属性将返回所有三个元素的“Hello”(可能是因为它们都具有相同的标识)。所以我的问题是,我怎么能阻止这种情况发生或任何人都可以建议一种过滤没有正确文化ID的行的方法(注意,这是动态的&amp;基于当前的文化) ?