FirstOrDefaultAsync()、SingleOrDefaultAsync()、FindAsync()方法的区别

FirstOrDefaultAsync()、SingleOrDefaultAsync()、FindAsync()方法的共同点是都是读取单个实体。

它们的不同点如下:

FirstOrDefaultAsync()

以异步方式返回序列中满足指定条件的第一个元素。

如果未找到此类元素,则返回默认值null。

如果有多个元素满足该条件,FirstOrDefaultAsync方法将返回满足条件的第一个元素。

FirstOrDefaultAsync 通常比以下备选方案SingleOrDefaultAsyncFindAsync更好的选择。

SingleOrDefaultAsync()

以异步方式返回序列中满足指定条件的唯一元素。

如果未找到此类元素,则返回默认值null。

如果有多个元素满足该条件,SingleOrDefaultAsync方法将引发异常。

FirstOrDefaultAsync的区别在于,必须明确知道返回结果是唯一的,才可以使用SingleOrDefaultAsync

FindAsync()

以异步方式查找具有主键 ( PK) 的实体。

FindAsync方法的性能比FirstOrDefaultAsync 更优,但无法通过 FindAsync 调用 Include相关数据。如果需要Include相关数据,FirstOrDefaultAsync 则是更好的选择。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/csharpe/15251.html

(0)
上一篇 2022年6月8日 21:31
下一篇 2022年3月12日 23:27

相关推荐

  • Context.Database.EnsureCreated()与迁移(Migrations)的区别

    情形一 如果找不到数据库,则会自动创建一个数据库并使用测试数据加载。 如果找到数据库,但没有一张表存在,则会自动创建表并使用测试数据加载。 如果找到数据库,表存在但没有数据,则会使用测试数据加载。 情形二 如果找到数据库,具有任何一张表且表中有数据,则不执行任何操作。 情形三 当数据模型(比如添加字段)发生更改时,自然…

    C#经验 2022年6月4日
    0920
  • 表达式树(Expression Tree)详解

    让我们来举一个简单的示例。 以下是一个代码行: 直观地看,整个语句是一棵树:应从根节点开始,浏览到树中的每个节点,以查看构成该语句的代码: 具有赋值 (var sum = 1 + 2;) 的变量声明语句 隐式变量类型声明 (var sum) 隐式 var 关键字 (var) 变量名称声明 (sum) 赋值运算符 (=)…

    C#经验 2022年4月4日
    07020
  • C#语言的发展介绍

    C#的发音为“See Sharp”,“#”读作“sharp”(/ ʃɑːp /),命名启发于音乐上的音名“C♯”,在音乐中“C♯”表示C升半音,为比C高一点的音节,且“#”形似4个加号,微软借助这样的命名,以表示C#在一些语言特性方面对C++的提升的意思。 由于显示器(标准字体、浏览器等)的技术限制,且大部分的键盘布局…

    C#经验 2021年1月1日
    03230

发表评论

登录后才能评论