2009-03-28 15 views
0

OK, question simple .. :)Chargement d'entités avec plusieurs clés candidates dans NHibernate?

Dans mon portail Web, j'ai eu des utilisateurs, qui ont évidemment besoin de se connecter.

Je suis une table avec les utilisateurs dans un MSSQL-DB:

  • PK - GUID - UserId
  • CK - nvarchar - Email
  • CK - nvarchar - PhoneNumber

maintenant Je souhaite que les utilisateurs puissent se connecter à mon site en utilisant leur numéro de téléphone ou leur adresse e-mail. Je dois donc chercher un utilisateur en utilisant le numéro de téléphone ou le courrier électronique (les deux étant garantis être uniques). Dans NHibernate, l'ISession me permet seulement de charger une entité en utilisant la clé primaire (qui est fondamentalement une clé de substitution dans mon cas). Est-il possible de charger des entités à l'aide de clés candidates?

Je suis très rouillé dans la base de données-conception, donc cela pourrait être une mauvaise conception, mais je pense vraiment qu'il est assez courant d'avoir un système comme celui-ci - mais si elle est mauvaise conception, s'il vous plaît laissez-moi savoir :)

Merci à l'avance

Répondre

2

ont pas utilisé NHibernate, mais en Java, en utilisant Session :: executeQuery avec quelques simples HQL allait chercher l'objet correct . Premièrement, je suppose que la "Session" d'Hibernate est équivalente à NHibernates "ISession". Deuxièmement, je suppose que HQL est le même pour les deux. Si les deux personnes sont vraies, vous auriez probablement utiliser quelque chose comme:

user = isession.executeQuery('from Users where Email = ?'); 

ou

user = isession.executeQuery('from Users where PhoneNumber = ?'); 

Encore une fois, parce que je ne l'ai pas travaillé avec NHibernate, il peut y avoir quelques différences dans la syntaxe. J'espère que cela aide!

+0

Oui, c'est essentiellement ce que j'ai découvert moi-même. HQL améliore vraiment la flexibilité d'Hibernate - je ne peux pas croire que je ne l'ai pas trouvé avant maintenant :) Merci beaucoup – cwap

0

Oh my .. trouvé la réponse moi-même :)

affichage ici au cas où quelqu'un se jette dans le même problème. Ce dont nous avons besoin, c'est de critères NHibernate ou NQL. J'ai trouvé les informations dont j'avais besoin ici: http://www.beansoftware.com/asp.net-tutorials/nhibernate-log4net.aspx

- sous "Requêtes et critères" - Faites défiler environ 4/5ème vers le bas.

(Ne pense pas Im a permis de citer l'info ici, donc je ferais mieux de ne pas)

Questions connexes