2009-10-23 12 views
0

J'essaie de mettre en œuvre un mappage bidirectionnel avec un mappage NHibernate fluide.Mappage bidirectionnel NHibernate fluide - résultats dans deux colonnes de référencement similaires

extrait de code des classes de domaine:

public class Template 
{ 
    public virtual int? Id { get; set; } 

    public virtual string Title { get; set; } 

    public virtual TemplateGroup TemplateParentGroup { get; set; } 
} 

public class TemplateGroup 
{ 
    public virtual int? Id {get; set;} 

    public virtual string Title { get; set; } 

    public IList<Template> Templates { get; set; } 
} 

extrait de code des classes de cartographie:

public class TemplateMap : ClassMap<Template> 
{ 
    public TemplateMap() 
    { 
     Id(x => x.Id).UnsavedValue(null).GeneratedBy.Native(); 
     Map(x => x.Title).Not.Nullable().Length(150); 
     References(x => x.TemplateParentGroup).Column("TemplateGroupId").Not.Nullable(); 
    } 
} 

public class TemplateGroupMap : ClassMap<TemplateGroup> 
{ 
    public TemplateGroupMap() 
    { 
     Id(x => x.Id).UnsavedValue(null).GeneratedBy.Native(); 
     Map(x => x.Title).Not.Nullable().Length(150); 
     HasMany(x => x.Templates).Table("Template").AsBag().Cascade.AllDeleteOrphan(); 
    } 
} 

Cependant, quand j'exporte le schéma, il en résulte deux colonnes FK dans le tableau de modèle, ici est la sortie SQL pour la table modèle:

create table [Template] (
    Id INT IDENTITY NOT NULL, 
    Title NVARCHAR(150) not null, 
    TemplateDoc VarBinary(MAX) not null, 
    *TemplateGroupId INT not null, 
    TemplateGroup_id INT null,* 
    primary key (Id) 
) 

Comme je l'ai m spécifiant déjà la référence FK. Nom de la colonne en tant que "TemplateGroupId",

Comment puis-je éviter que TemplateGroup_id soit généré?

Répondre

1

Essayez d'utiliser le KeyColumn sur la cartographie hasMany

HasMany(x => x.Templates).KeyColumn("TemplateGroupId").Table("Template").AsBag().Cascade.AllDeleteOrphan(); 
+0

Merci !, Il a résolu le problème. La valeur de 'KeyColumn' spécifie-t-elle la colonne de référencement commune dans deux tables, Template et TemplateGroup? – iniki

Questions connexes