2010-12-02 5 views
1

Je suis situation où je suis mappage des colonnes de la table à la clé primaire de la même table. Le tableau se présente comme suittable de la carte à lui-même dans la relation parent-enfant Fluent Nhibernate

---+-------+--------- 
ID Name ParentId 
---+-------+--------- 
1 Parent1 0 
2 Child 1 1 
3 Child 2 1 
4 Parent2 0 
5 Child 3 4 

J'ai créé un modèle suivant et mapping class Fluent NHibernate

//Model.LocationType.cs 
public class LocationType 
    { 
     public virtual long Id { get; set; } 
     public virtual string ShortName { get; set; } 
     public virtual string Description { get; set; }   
     public virtual IList<LocationType> ParentId { get; set; } 
    } 

et

//Mapping.LocationTypeMap.cs 
public class LocationTypeMap : ClassMap<LocationType> 
    { 
     public LocationTypeMap() 
     { 
      Table("SET_LOC_TYPE"); 
      Id(x => x.Id).Column("LOC_TYPE_ID").GeneratedBy.Assigned(); 
      Map(x => x.ShortName, "SHORT_NAME").Length(15).Not.Nullable(); 
      Map(x => x.Description, "LOC_DESC").Length(50).Not.Nullable(); 
      References(x => x.ParentId).Column("PARENT_LOC_TYPE_ID").Cascade.SaveUpdate(); 
     } 
    } 

mais je reçois un message d'erreur de suivi quand j'exécute mon code :

Unable to cast object of type 'SmartHRMS.Core.Domain.Model.LocationType' to type 'System.Collections.Generic.IList`1[SmartHRMS.Core.Domain.Model.LocationType]'. 

Edit 1: Au lieu d'utiliser i essayé

HasMany(x => x.ParentIds).KeyColumn("PARENT_LOC_TYPE_ID"); 

Bien qu'il a travaillé et a résolu le problème de casting que je l'ai mentionné ci-dessus, mais le résultat que je suis gettting est l'inverse de ce que je dois. Dans les objets LocationType des parents, il énumère tous Childs dans IList, donc par exemple au-dessus du résultat sera:

-----+----------+------ 
ID  Name  ParentId 
-----+----------+------ 
1  Parent1  IList<Child1, Child2> 
2  Child 2  IList<Empty> 
3 .... same 
4  Parent2  IList<Child3> 
5  Child 3  IList<Empty> 

Répondre

1

On dirait que vous devez utiliser HasMany dans votre cartographie au lieu de References.

+0

J'ai fait et s'il vous plaît voir mon post édité pour le problème qu'il a causé – Waqas

Questions connexes