FirstOrDefaultAsync()、SingleOrDefaultAsync()、FindAsync()方法的共同点是都是读取单个实体。
它们的不同点如下:
FirstOrDefaultAsync()
以异步方式返回序列中满足指定条件的第一个元素。
如果未找到此类元素,则返回默认值null。
如果有多个元素满足该条件,FirstOrDefaultAsync
方法将返回满足条件的第一个元素。
FirstOrDefaultAsync
通常比以下备选方案SingleOrDefaultAsync
和FindAsync
更好的选择。
SingleOrDefaultAsync()
以异步方式返回序列中满足指定条件的唯一元素。
如果未找到此类元素,则返回默认值null。
如果有多个元素满足该条件,SingleOrDefaultAsync
方法将引发异常。
与FirstOrDefaultAsync
的区别在于,必须明确知道返回结果是唯一的,才可以使用SingleOrDefaultAsync
。
FindAsync()
以异步方式查找具有主键 ( PK) 的实体。
FindAsync
方法的性能比FirstOrDefaultAsync
更优,但无法通过 FindAsync
调用 Include
相关数据。如果需要Include
相关数据,FirstOrDefaultAsync
则是更好的选择。
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/csharpe/15251.html