使用nhibernate检索单个行和列并将其转换为字符串

时间:2014-01-03 14:03:57

标签: c# nhibernate

我正在使用Salt在MVC 4.0中创建登录功能。对于每个注册用户,Salt是不变的,因为安全性不一定是一流的。现在要创建哈希(与数据库中的哈希进行比较),我需要从数据库中检索特定用户的salt,并使用已插入的密码创建哈希。我使用Nhibernate进行数据库流量操作。然而,由于我对Nhibernate相当新,我不知道如何将盐作为字符串检索,我试过这个:

 var salt = session.QueryOver<Translator>()
     .Where(x => x.EmailAddress == emailAddress)
     .Select(x => x.Salt)
     .List()
     .ToString();

x。是映射,emailAddress是函数中的参数。 该错误提到salt值(它实际显示字符串)不是models.translator类型,不能在此泛型集合中使用。

1 个答案:

答案 0 :(得分:2)

获取整个实体并获得.Salt属性并不昂贵,因此您可以安全地忘记Select部分。

但是,在条件API中,我知道您可以在查询中使用.SetProjection()来获取单个属性,然后调用.UniqueResult<string>()

使用QueryOver,您可以尝试.List<string>()。不要在列表中调用.ToString(),而是使用.Single()获取列表中唯一的元素。