2010-05-14 6 views
0

Tout 1-M qui utilise la clé primaire de la table parent, mais tout 1-M qui utilise une colonne différente ne fonctionne pas. Il génère le SQL correctement, mais place la valeur de la clé dans le SQL au lieu de la valeur de la colonne que je veux.Le chargement paresseux ne fonctionne pas pour un à plusieurs

mapping Exemple:

public TemplateMap() 
    { 
     Table("IMPORT"); 

     LazyLoad(); 

     Id(x => x.ImportId).Column("IMPORT_ID").GeneratedBy.Assigned(); 

     Map(x => x.ImportSetId).Column("IMPORTSET_ID"); 

     HasMany(x => x.GoodChildren) 
      .Access.CamelCaseField() 
      .KeyColumns.Add("IMPORT_ID") 
      .Cascade.Delete() 
      .Inverse(); 

     HasMany(x => x.BadChildren) 
      .Access.CamelCaseField() 
      .KeyColumns.Add("IMPORTSET_ID") 
      .Cascade.Delete() 
      .Inverse(); 
    } 

Lazy loading travaille pour GoodChildren, mais pas pour BadChildren.

L'instruction SQL est correcte pour les deux enfants. Mais les mauvaises valeurs sont l'utilisation. Si la valeur de IMPORT_ID est 10 et la valeur de IMPORTSET_ID est 12. La valeur 10 sera utilisée pour le IMPORTSET_ID dans le SQL pour BadChildren au lieu de 12.

Tout le monde a des idées sur ce que je dois changer pour obtenir BadChildren fonctionne correctement?

Note:
liens GoodChildren à IMPORT_ID sur le modèle

liens BadChildren à IMPORTSET_ID sur le modèle

Répondre

-1

Mise à niveau vers la version 3.0 a résolu le problème.

+0

Pourquoi la note de -1? – Shire

0

Je ne suis pas sûr de savoir comment faire de la manière que vous voulez le faire, mais une alternative est d'utiliser une colonne sur votre table pour enfants d'identifier ce genre d'enfant le dossier est:

 HasMany(x => x.GoodChildren) 
      .Table("tblChildren") 
      .Where("CHILD_TYPE='Good'"); 

     HasMany(x => x.BadChildren) 
      .Table("tblChildren") 
      .Where("CHILD_TYPE='Bad'"); 
+0

La table GoodChildren est fine, car sa clé composite inclut la colonne d'identité parente (c'est-à-dire la clé primaire). La table badColumn ne fonctionne pas car sa clé composite inclut une colonne qui n'est pas la colonne d'identification parente. En plus, ils sont deux tables différentes, pas la même table. J'ai changé les noms pour essayer de le rendre plus évident. Si c'est important, on s'appelle champs et l'autre archive. – Shire

Questions connexes