Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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# Linq到NHibernate:序列不包含元素_C#_Asp.net Mvc 3_Nhibernate_Linq To Nhibernate - Fatal编程技术网

C# Linq到NHibernate:序列不包含元素

C# Linq到NHibernate:序列不包含元素,c#,asp.net-mvc-3,nhibernate,linq-to-nhibernate,C#,Asp.net Mvc 3,Nhibernate,Linq To Nhibernate,我知道我在这里做错了什么,我只是不知道是什么,因为我不太确定问题是什么。以下是代码,称为: 通话 System.Linq.Expressions.Expression<Func<AccountDataModel, bool>> deleg = (m => m.Email == model.Email); AccountDataModel query = data

我知道我在这里做错了什么,我只是不知道是什么,因为我不太确定问题是什么。以下是代码,称为:

通话

System.Linq.Expressions.Expression<Func<AccountDataModel, bool>> deleg = 
                            (m => m.Email == model.Email);
                        AccountDataModel query = database.FindBy(deleg);
Ze详细信息

基本上,我现在要测试的是我网站上的注册模块,它应该搜索一封提供给我的电子邮件,看看它是否存在。我在数据库中隐藏了一个加密的电子邮件地址(是的,模型中的电子邮件也已加密),该地址应该与提供的注册电子邮件相匹配。问题是没有返回任何结果


我到底做错了什么?

您对
的调用。当序列为空时,Single
将引发此异常。如果可能找不到匹配项,则应使用
.SingleOrDefault
,如果不存在匹配项,则返回
null

理解
Single
SingleOrDefault
First
FirstOrDefault
之间的区别非常重要

以下是这些方法的有用可视化:

╔═════════════════╦═════════════╦═════════╦═════════════════════╗ ║ ║ [] (Empty) ║ ["one"] ║ ["one", "two",...] ║ ╠═════════════════╬═════════════╬═════════╬═════════════════════╣ ║ FirstOrDefault ║ null ║ "one" ║ "one" ║ ║ First ║ Exception ║ "one" ║ "one" ║ ║ SingleOrDefault ║ null ║ "one" ║ Exception ║ ║ Single ║ Exception ║ "one" ║ Exception ║ ╚═════════════════╩═════════════╩═════════╩═════════════════════╝ ╔═════════════════╦═════════════╦═════════╦═════════════════════╗ ║ Error messages: ║ no elements ║ ║ multiple elements ║ ╚═════════════════╩═════════════╩═════════╩═════════════════════╝ ╔═════════════════╦═════════════╦═════════╦═════════════════════╗ ║ ║ [](空)║ [“一”]║ [“一”、“二”、…]║ ╠═════════════════╬═════════════╬═════════╬═════════════════════╣ ║ 第一默认值║ 无效的║ “一个”║ “一个”║ ║ 弗斯特║ 例外情况║ “一个”║ “一个”║ ║ 单缺省║ 无效的║ “一个”║ 例外情况║ ║ 单身║ 例外情况║ “一个”║ 例外情况║ ╚═════════════════╩═════════════╩═════════╩═════════════════════╝ ╔═════════════════╦═════════════╦═════════╦═════════════════════╗ ║ 错误消息:║ 无元素║ ║ 多元║ ╚═════════════════╩═════════════╩═════════╩═════════════════════╝ 正如您所看到的,
FirstOrDefault
是唯一不会引发异常的

所以,归根结底是这样的:
使用
First
SingleOrDefault
Single
的唯一原因是,如果结果不符合预期,将引发异常

这将为您提供更好的调试体验,并使您的代码具有更好的语义。

感谢您的响应-我将代码更改为您建议的代码,但仍然收到相同的错误。我是否有可能不正确地实现我的查询?只有在使用
Single
First
时才会抛出“Sequence contains no elements”错误。。。它不会被
*或default
@HollandSchutte抛出。我更新了我的答案,对不同的方法进行了更好的解释。希望这能帮助你找到问题的根源。谢谢你,斯科特。我会尽快复习。
Sequence contains no elements
╔═════════════════╦═════════════╦═════════╦═════════════════════╗ ║ ║ [] (Empty) ║ ["one"] ║ ["one", "two",...] ║ ╠═════════════════╬═════════════╬═════════╬═════════════════════╣ ║ FirstOrDefault ║ null ║ "one" ║ "one" ║ ║ First ║ Exception ║ "one" ║ "one" ║ ║ SingleOrDefault ║ null ║ "one" ║ Exception ║ ║ Single ║ Exception ║ "one" ║ Exception ║ ╚═════════════════╩═════════════╩═════════╩═════════════════════╝ ╔═════════════════╦═════════════╦═════════╦═════════════════════╗ ║ Error messages: ║ no elements ║ ║ multiple elements ║ ╚═════════════════╩═════════════╩═════════╩═════════════════════╝