2009-04-28 6 views
0

J'ai une carte Fluent NHibernate comme:Courant Nhibernate entité composée, spécifiez étrangère clé

public class UserMap : ClassMap<PortalUser> 
{ 
    public UserMap() 
    { 
     WithTable("aspnet_Users"); 
     Id(x => x.Id, "UserId") 
      .GeneratedBy.Guid(); 
     Map(x => x.Name, "UserName"); 
     Map(x => x.Login, "LoweredUserName"); 
     WithTable("LdapUsers", m => m.Map(x => x.FullName, "FullName")); 

    } 
} 

Ma colonne de clé étrangère dans le tableau « ldapuser » est UserId mais la sélection qui obtient généré va chercher un " PortalUserId ".
Existe-t-il un moyen de spécifier la clé de relation directement?

Répondre

2

Essayez ceci:

... 
WithTable("LdapUsers", m => { 
    m.Map(x => x.FullName, "FullName"); 
    m.WithKeyColumn("UserId"); 
}); 
+0

Je pense que vous voulez dire m.WithKeyColumn ("UserID"); –

+0

WithTable crée un élément et, si je comprends bien, est supposé faire référence à la colonne key sur la table jointe. Ronnie a dit que sa clé étrangère est "LdapUser" donc la requête devrait ressembler à quelque chose comme ... FROM aspnet_Users un INNER JOIN LdapUsers b ON un.UserId = b.LdapUser. Ma référence: http://ayende.com/Blog/archive/2007/04/24/Multi-Table-Entities-in-NHibernate.aspx Mais vous pourriez avoir raison, Jamie; Honnêtement, je n'en ai aucune idée ... Je n'ai jamais eu à utiliser cette construction. :) –

+0

En fait ma colonne étrangère était "UserId" dans la table "LdapUser" et le mettre à la place de "LdapUser" a parfaitement fonctionné. Merci encore. – Ronnie

Questions connexes