2010-03-15 7 views
2

J'ai donc mis en place similaire à cette question: Parent Child SetupNHibernate articles enfant requête à l'aide Id Parent

Tout fonctionne très bien lors de l'enregistrement des parents et les enfants.

Cependant, je semble avoir un problème lors de la sélection des enfants. Je n'arrive pas à avoir tous les enfants avec un parent spécifique.

Cela échoue avec: NHibernate.QueryException: ne pouvait pas résoudre la propriété: ParentEntity_id de: Test.Data.ChildEntity

Voici mon code:

public IEnumerable<ChildEntity> GetByParent(ParentEntity parent) 
    { 
     using (ISession session = OrmHelper.OpenSession()) 
     { 

      return session.CreateCriteria<ChildEntity>().Add(Restrictions.Eq("ParentEntity_id ", parent.Id)).List<ChildEntity>(); 
     } 
    } 

Toute aide à la construction d'une fonction appropriée pour obtenir tous les articles seraient appréciés.

Oh, je me sers Fluent NHibernate pour construire les applications - version 1 RTM et NHibernate 2.1.2 GA

Si vous avez besoin de plus amples informations, laissez-moi savoir.

Selon vous demandez, mes applications courant:

  public ParentEntityMap() 
    { 
     Id(x => x.Id);   
     Map(x => x.Name);   
     Map(x => x.Code).UniqueKey("ukCode"); 
     HasMany(x => x.ChildEntity).LazyLoad() 
      .Inverse().Cascade.SaveUpdate(); 
    } 

    public ChildEntityMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Amount); 
     Map(x => x.LogTime); 
     References(x => x.ParentEntity);     
    } 

que les cartes aux 2 tableaux suivants:

CREATE TABLE "ParentEntity" (
Id integer, 
Name TEXT, 
Code TEXT, 
primary key (Id), 
unique (Code) 
) 

CREATE TABLE "ChildEntity" (
Id integer, 
Amount NUMERIC, 
LogTime DATETIME, 
ParentEntity_id INTEGER, 
primary key (Id) 
) 

Le magasin de données SQLite.

+0

Quelle est votre cartographie? Bi-directionnel? Et vous avez vraiment une propriété appelée "ParentEntity_id dans ChildEntity" En d'autres termes, postez vos mappings/POCOs et cela fournira l'information nécessaire – Ted

+0

Ajout de la cartographie et de la structure de sql J'espère que cela vous aidera Si nécessaire, je peux fournir les propriétés – thorkia

Répondre

1
return session.CreateCriteria<ChildEntity>() 
    .Add(Restrictions.Eq("ParentEntity", parent)) 
    .List<ChildEntity>(); 

Utilisez simplement le parent lui-même.

0

Dans vos critères, vous ne devez jamais vous référer au nom de la colonne mais au nom de la propriété. Changez "ParentEntity_id" en "ParentEntity.Id" et cela devrait le résoudre.

+0

Votre suggestion et mxmissile ont fonctionné, mais j'ai aimé sa méthode de transmission d'une entité Parent réelle. – thorkia

Questions connexes