【问题标题】:The right usage of async methods in Entity Framework [closed]在实体框架中正确使用异步方法 [关闭]
【发布时间】:2015-04-17 12:04:01
【问题描述】:

我正在使用实体框架 6.1 开发一个新应用程序。这次我对存储库类中的所有内容都使用异步方法。这意味着我没有使用 SaveChanges()、ToList()、Count(),而是使用 SaveChangesAsync()、ToListAsync()、CountAsync()。

我进行了一项研究,以找出使用异步操作的正确时间。问题是有些文章说尽可能使用异步操作(考虑到 EF 6.1),在简单场景中可能没有任何区别,但今天异步始终是一个不错的选择。

但是有文章说DbContext类在主题是异步查询的时候有点乱,选择异步操作的时候要小心...

最后,经过数小时的研究,我仍然不知道我是否可以毫无问题地使用异步操作(考虑到最新版本的 EF)...有人说可以,有人说不行...所以,我的问题是“我可以毫无问题地对每个数据库查询使用异步操作吗?”

希望我清楚自己的问题。

【问题讨论】:

  • 恕我直言,是的,您可以...但是您应该仅在需要时才使用异步...因为如果您不需要并行运行,异步只会复杂化并降低性能
  • @ArsenMkrt 我什么时候需要并行运行?查询具有大量数据的表,对吗?或者可能是最常被调用的查询?
  • 当你想同时做两件或多件事情时......当你每次都需要等待结果时,并行运行并不能提高性能,运行后
  • 是的,但我的观点是,在 Web 应用程序中,使用异步查询时,IIS 在获取数据时仍可用于其他传入请求......所以,就我而言,使用异步是否有问题查询一切?因为我不确切知道哪些查询会花费更多时间,哪些不会

标签: c# entity-framework asynchronous


【解决方案1】:

新的 Async 模型专为您的所有代码和应用程​​序架构基于 ASYNC 模型的情况而设计...然后您可以使用异步方法..

如果您使用的是非异步模型。更好的方法是使用非异步方法,因为您永远不会知道非异步上下文中的异步代码是否会正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-26
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多