我正在使用 nHibernate 尝试使用命名查询登录用户,但他们的密码经过哈希处理,因此存储为 MS SQL DB 中的二进制字段。但是我无法让登录代码工作。它抛出一个错误:
using (var session = sessionFactory.OpenSession())
{
user = (CreamUser)session.GetNamedQuery("loginuser")
.SetString("UserName", userName)
.SetBinary("Password", hashedPassword).UniqueResult();
}
<sql-query name="loginuser">
<query-param name="UserName" type="string" />
<query-param name="Password" type="binary" />
<return alias="User" class="components.User"/>
<![CDATA[
SELECT * FROM users
WHERE username=:UserName AND
password=:Password
]]>
</sql-query>
我已经尝试了我能想到的一切,但无法让它发挥作用。