【问题标题】:FirstOrDefault or FirstOrDefaultAsync core what to choose [closed]FirstOrDefault 或 FirstOrDefaultAsync 核心选择什么[关闭]
【发布时间】:2021-06-26 23:49:52
【问题描述】:

我仍然找不到有关使用 FirstOrDefault / FirstOrDefaultAsync、First / FirstAsync 和 ToList / ToListAsync 的合适信息。一切都是异步的,这是一个好习惯吗?感谢您的帮助。

【问题讨论】:

  • 如此广泛的问题在 Stack Overflow 上是题外话。
  • 通常你希望你的代码是异步的。特别是如果您使用的是 asp net core。

标签: c# asynchronous entity-framework-core


【解决方案1】:

简单来说,就是说你有一些耗时的任务要完成。

你可以做两件事,

  • 自己做>>你必须坚持到任务完成
  • 将其委托给其他人>>其他人将返回给您结果,所以 您不必在那里等待。

在编程中,Async 会在这些情况下为您提供帮助,这样您就无需让主要的thread 等待某事直到完成, 而是可以使用async/await 将控制权传递给其他线程。

FirstOrDefault >> 当你已经有数据并且想要在没有找到匹配时返回第一个匹配值或默认值时使用。

First >> 如果找到则返回第一个匹配的值,否则抛出错误,请注意在使用 First 时处理错误。最好使用FirstOrDefault 而不是First。

ToList >> 将您的数据集转换为列表对象。

Async 这些版本将在您等待数据时使用(可能是 dboperation/apicall) 和 那么你要执行相应的操作。

【讨论】:

  • 非常感谢。
【解决方案2】:

Task 异步编程模型 (TAP) 提供了对异步代码的抽象。就像往常一样,您将代码编写为一系列语句。您可以阅读该代码,就好像每个语句在下一个语句开始之前完成一样。编译器会执行许多转换,因为其中一些语句可能开始工作并返回代表正在进行的工作的任务。

您可以查看文档here

这可能是重复的this one

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-01
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多