À titre d'exemple, disons que vous avez une classe comme telleNHibernate Linq: Contient Déclaration
**Person**
int PersonID
string PersonName
BusinessLocation Locations
**BusinessLocation**
string city
string state
List<int> ZipCodes
(en disant que les emplacements peuvent exister dans plusieurs codes postaux)
(ignorant que zipcodes devrait être chaînes au lieu d'ints, ceci est juste un exemple)
Dites que les emplacements des entreprises existent dans plusieurs codes postaux.
Maintenant j'essaye de retirer toutes les personnes dans la table de personne, donné un zipcode d'affaires.
Par exemple, je veux toutes les personnes qui ont un code postal de 32567.
(Compte tenu de la liste des ID, cela fonctionne, je suis en train de faire le contraire, étant donné un ID, je veux une liste des personnes)
public Person GetPersonsByBusinessZipCode(int zipcode)
{
List<Person> personList =
this.GetAllQueryable().Where(
x => x.Locations.ZipCodes.Contains(zipcode)).ToList();
}
Ceci est mappé comme tel dans Fluent.
HasMany<int>(x => x.ZipCodes)
.Table("BusinessLocationsZipCodes")
.KeyColumns.Add("BusinessLocationID")
.Inverse()
.Element("ZipCode")
.AsBag()
.Cascade.None()
.Cache.ReadOnly();
BusinessLocationZipCodes est juste une table de référence faisant allusion qu'un BusinessLocation peut avoir plusieurs ZipCodes, d'où le hasMany. Sachant que l'inverse fonctionne, si on me donne une liste de ZipCodes et que j'essaie de trouver BusinessLocations contenues dans la liste des zipcodes fonctionne (tant que le mapping est un zipcode et non une liste de zipcodes). Maintenant, j'essaie juste de trouver le BusinessLocations donné un code postal.
Si quelqu'un a une réponse, je l'apprécierais.
Qu'est-ce qui ne fonctionne pas?Avez-vous une exception, obtenez-vous le mauvais résultat, etc. Quel fournisseur linq utilisez-vous? – Paco
J'utilise Linq pour Nhibernate 1.0, Nhibernate 2.1, et FluentNhibernate 1.0, ce qui ne fonctionne pas, c'est de pouvoir retirer une liste de BusinessLocations en lui donnant un code postal, en utilisant la liste de codes postaux pour Linq. –
Les codes postaux sont-ils insérés avec inverse et cascade aucun? – Paco