Je rencontre des problèmes de mappage d'une relation complexe de plusieurs à plusieurs. J'ai un héritage db qui ressemble à ceci:Nhibernate ManyToMany avec une clause dynamique où
Foos: | Id | Foo |
FooBars: | FooId | BarId |
Barres: | Id | Bar | CultureId |
que je suis en train de la carte au modèle d'objet suivant:
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; }
}
avec les applications:
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);
}
}
Le problème est que je dispose de plusieurs Bar est avec le même identifiant pour différentes CultureIds
par exemple
j'aurais une table qui ressemble à:
Id | Bar | CultureId
1, Bonjour, 1
1, Bonjour, 2
1, Gutentag, 3
Pour le moment, la propriété Bars de la table ci-dessus renverra 3 éléments, mais la propriété Bar sur elle retournera "Hello" pour les trois éléments (sans doute parce qu'ils ll aura la même identité). Donc, ma question est, comment puis-je arrêter cela ou quelqu'un peut-il suggérer un moyen de filtrer les lignes qui n'ont pas l'id culture correcte (note, c'est & dynamique sur la base de la culture actuelle)?