2009-04-30 13 views
0

In this question J'ai reçu une réponse à chaud pour mapper une entité composée à partir de la clé primaire de la table. donc donné:Entité composée Nhibernate fluide, spécifiez la clé parente

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"); 
      m.WithKeyColumn("UserId"); 
    }); 
} 

everithing fonctionne si dans le « ldapuser » et dans les « aspnet_Users » il y a une colonne nommée « UserId ». Que faire Si je veux spécifier à la fois le nom de colum pour la table de clé étrangère et le nom de colonne pour la clé de la table principale car ce n'est pas le pk alors utilisez une autre colonne pour faire la jointure?

Répondre

0

Il semble que cela ne soit actuellement pas du tout supporté par NHibernate. Il y a un open issue sur la JIRA de NHibernate. En fait, je pense que c'est pour les collections, mais cela s'applique probablement aussi à ce que vous faites. L'idée est d'ajouter un attribut property-ref à votre élément <key> pointant vers la propriété que vous souhaitez référencer à la place de la clé primaire. Supposément le changement est déjà disponible dans la version Alpha2 de NHibernate 2.1.0. Bien sûr, il se peut que NH2.1 soit une version générale avant que cela ne soit ajouté à FNH. Si vous le pouvez, je vous recommande de vous procurer la version Alpha2 et de l'essayer avec votre situation. Si cela ne fonctionne pas pour votre entité composée, seulement pour les collections, vous pourriez vouloir soumettre un autre problème sur JIRA afin qu'il soit ajouté également.

Questions connexes