好的,简单的问题.. :))
在我的网站上,我找到了显然需要登录的用户。
我在MSSQL-DB中找到了一个用户表:
现在,我希望用户能够使用他们的电话号码或电子邮件登录我的网站,因此我需要以某种方式使用电话号码或电子邮件来获取用户(两者都是保证唯一的。) / p>
在NHibernate中,ISession只允许我使用主键加载实体(在我的情况下,它基本上是代理键)。无论如何使用候选键加载实体?
我在数据库设计方面非常生疏,所以这可能是糟糕的设计,但我认为这样的计划有点普遍 - 但如果设计很差,请告诉我:)
提前致谢
答案 0 :(得分:2)
没有使用NHibernate,但是在Java中,使用Session :: executeQuery和一些简单的HQL会获取正确的对象。首先,我假设Hibernate的“Session”与NHibernates“ISession”相同。其次,我认为两者的HQL是相同的。如果这两个都是真的,你可能会使用类似的东西:
user = isession.executeQuery('from Users where Email = ?');
或
user = isession.executeQuery('from Users where PhoneNumber = ?');
同样,因为我没有使用NHibernate,所以语法上可能会有一些差异。希望它有所帮助!
答案 1 :(得分:0)
哦,我的..自己找到答案:)
如果有人遇到同样的问题,请在此处发布。
我们需要的是NHibernate Criterias或NQL。我在这里找到了我需要的信息: http://www.beansoftware.com/asp.net-tutorials/nhibernate-log4net.aspx
- 在“查询和标准”下 - 向下滚动约4/5。
(不要认为我允许在这里引用信息,所以我最好不要)