Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用nhibernate检索单个行和列,并将其转换为字符串_C#_Nhibernate - Fatal编程技术网

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

C# 使用nhibernate检索单个行和列,并将其转换为字符串,c#,nhibernate,C#,Nhibernate,我正在用Salt在MVC4.0中创建一个登录函数。对于每个注册用户,Salt是恒定的,因为安全性不必是一流的。现在要创建散列(与数据库中的散列进行比较),我需要从数据库中检索特定用户的salt,并使用插入的密码创建散列。我使用Nhibernate进行数据库传输。然而,由于我对Nhibernate相当陌生,我不知道如何将盐作为字符串检索,我尝试了以下方法: var salt = session.QueryOver<Translator>() .Where(x => x

我正在用Salt在MVC4.0中创建一个登录函数。对于每个注册用户,Salt是恒定的,因为安全性不必是一流的。现在要创建散列(与数据库中的散列进行比较),我需要从数据库中检索特定用户的salt,并使用插入的密码创建散列。我使用Nhibernate进行数据库传输。然而,由于我对Nhibernate相当陌生,我不知道如何将盐作为字符串检索,我尝试了以下方法:

 var salt = session.QueryOver<Translator>()
     .Where(x => x.EmailAddress == emailAddress)
     .Select(x => x.Salt)
     .List()
     .ToString();
var salt=session.QueryOver()
.Where(x=>x.EmailAddress==EmailAddress)
.选择(x=>x.Salt)
.List()
.ToString();
x在哪里。是映射,
emailAddress
是函数中的一个参数。
错误提到salt值(它实际上显示字符串)不是models.translator类型,因此不能在此泛型集合中使用。

获取整个实体然后获取其
.salt
属性并不昂贵,因此您可以放心地忘记
选择
部分

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


使用
QueryOver
,您可以尝试
.List()
。但是,不要在列表中调用
.ToString()
,而是使用
.Single()

获取列表中的唯一元素,为什么不使用默认的SimpleMembership和salt密码呢?我有一种分配,我必须使用某些选项,比如加密到pbkdf2进行哈希。。SimpleMembership没有涵盖这一点,对吗?请注意,在MVC 4和ASP.NET 4和4.5中,默认哈希现在是HMACSHA256。也许这个主题可以帮助您:是的,但我还是有点被作业中必须使用的东西卡住了。。希望我能使用简单的解决方案是的,
List
(或者
SingleOrDefault
,如果是单个条目)应该可以。LINQ provider也可以用于获得相同的结果。嗯,当我读到这些片段时,它们似乎解决了难题,但我在创建正确的语法来完成难题时遇到了一些困难。。你能给我举个例子吗?这里有一个官方的例子,段落中的第三个:。因此,我怀疑它不是.List().ToString(),而是.List().Single(),甚至是@Patryk建议的.Single()。如果可能没有行,请将Single更改为SingleOrDefault。是的,我看到了该示例并尝试了它,很明显问题不在于此语法,而在于其他地方,因为我得到的错误显示我想从数据库检索的salt字符串非常好,但它似乎无法用于此常规集合。。不过,我不明白那是什么意思。。