2010-10-22 10 views
0

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)?

Répondre

0

Vous ne pouvez pas créer de clauses dynamiques where dans vos mappages. Vous allez devoir interroger cette collection au lieu d'y accéder via le parent, en utilisant une requête Criteria ou HQL. Vous pouvez lire sur filters, mais ils nécessitent toujours une requête.

Questions connexes