.net - Entity Framework 4 Single() vs First() vs FirstOrDefault()

标签 .net linq entity-framework entity-framework-4 linq-to-entities

我花了很长时间来比较查询单个项目的不同方法以及何时使用每种方法。

是否有人有一个比较所有这些的链接,或者一个关于为什么您会使用其中一个而不是另一个的快速解释?还有更多我不知道的运算符吗?

谢谢。

最佳答案

以下是不同方法的概述:

  • Find() - 当您想通过主键获取项目时。如果找不到项目,这将返回 null。它会在进入数据库之前查看上下文(正如 Yaron 在评论中指出的那样),如果您需要在同一上下文处于事件状态时多次获取同一实体,这可能是一个重要的效率因素。

  • Single() - 当您期望查询仅返回一项时。如果查询没有准确返回一项,这将引发异常。

  • SingleOrDefault() - 当您期望查询返回零个或一个项目时(即您不确定是否存在具有给定键的项目)。如果查询不返回零个或一个项目,这将引发异常。

  • First() - 当您希望查询返回一个或多个项目,但您只想访问代码中的第一个项目时(此处的查询中排序可能很重要)。如果查询未返回至少一项,这将引发异常。

  • FirstOrDefault() - 当您期望查询返回零个或多个项目,但您只想访问代码中的第一个项目时(即您不确定是否存在具有给定键的项目)

关于.net - Entity Framework 4 Single() vs First() vs FirstOrDefault(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3485317/

相关文章:

c# - WPF 交互触发器 CallMethodAction

.net - 如何构建 'flippable' 应用程序?

c# - 将 ibm mq 客户端连接到较低版本的问题

c# - 在 Object Collection 中的 Entity 框架中拆分字符串,即在 New {} 中

c# - 如何将谓词与 Included 属性一起包含?

entity-framework - EF Code First 中自引用外键的语法是什么?

c# - 如何配置版本化实体之间的一对多/多对一关系

c# - 使用具有鉴别器和多态性的 C# MongoDB v2 驱动程序

c# - 如何使用 IEqualityComparer

entity-framework - Entity Framework 部署 - 连接字符串