如何使用LINQ异步调用带有子记录的数据库?

亚历克斯

我正在使用EF6,并希望使以下查询完全异步:

 await MyDataContext.ADbSet.
                     First(a => a.Something == "Something").
                     ASubCollection.
                     Select(x => new { x.SubCollectionId }).
                     ToListAsync();

我认为这行不通,因为First()返回了实际的实体并可以访问,ASubCollectionICollection不是IQueryable

我可以使用以下代码解决此问题:

 await MyDataContext.ADbSet.
                     Where(a => a.Something == "Something").
                     SelectMany(a => a.ASubCollection).
                     Select(x => new { x.SubCollectionId }).
                     ToListAsync();

但是,这似乎是“ hacky”,因为我在编译时Where(...)应该使用a时知道应该有一个First()完全满足查询条件的元素。有更好的方法吗?

脊椎固定器

First()的调用实际上是枚举基础序列并返回一个实体而不是的调用Task因此,First()不能与await-keyword一起使用

在这种情况下,您的第二个解决方案是完全有效的(根本不是“ hacky”),因为无需在生成的数据库查询中添加限制,因为Where(...)在这种特殊情况下-call将恰好返回一个元素-使用或在查询中没有限制。

如果Where-call可能返回多个元素,或者您只是想确保仅考虑第一个元素,则插入调用Take(1)将带来序列的第一个元素,但仍然是一个IQueryable

await MyDataContext.ADbSet
                   .Where(a => a.Something == "Something")
                   .Take(1)
                   .SelectMany(a => a.ASubCollection)
                   .Select(x => new { x.SubCollectionId })
                   .ToListAsync();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用LINQ异步调用带有子记录的数据库?

来自分类Dev

如何处理对MySQL数据库的异步调用

来自分类Dev

为什么需要异步调用数据库?

来自分类Dev

等待GWT异步调用中的数据库结果

来自分类Dev

如何处理来自带有回调的多个ajax异步调用的数据?

来自分类Dev

如何使用LINQ更新数据库中的记录?

来自分类Dev

如何使用LINQ更新数据库中的记录?

来自分类Dev

使用Ajax对数据库进行异步调用时,ERR_CONNECTION_RESET *仅*-CakePHP

来自分类Dev

使用Ajax对数据库进行异步调用时,ERR_CONNECTION_RESET *仅*-CakePHP

来自分类Dev

使用递归的异步数据库调用

来自分类Dev

玩!框架异步调用修改数据库的相同对象

来自分类Dev

如何使用 mockito 存根异步调用?

来自分类Dev

如何使用 Spring-data-JPA 在带有 crudRepository 的 MySQL 数据库中附加多条记录?

来自分类Dev

如何异步将多个记录提交到数据库?

来自分类Dev

如何在带有thunk的react-redux挂钩中进行异步调用?

来自分类Dev

在异步调用axios API之后使用带有React Hook和Redux的SetState

来自分类Dev

将await与异步数据库调用一起使用有什么好处

来自分类Dev

带有异步调用的 ES6 循环

来自分类Dev

如何正确进行异步/并行数据库调用

来自分类Dev

如何使用分组依据并使用 linq 对数据库记录求和

来自分类Dev

使用 patchEntity 更新带有 cakephp 的数据库记录的问题

来自分类Dev

如何在asp.net mvc中使用Linq从数据库中删除多个记录

来自分类Dev

如何从MVC控制器调用带有参数的数据库“选择”存储过程?

来自分类Dev

如何在Diesel中对Postgres数据库执行带有子查询的删除?

来自分类Dev

Firebase数据库子创建问题(带有模型)

来自分类Dev

Scala异步数据库调用

来自分类Dev

节点JS异步数据库调用

来自分类Dev

HTML5 / Javascript GeoLocation:将数据传递给回调函数-或-暂停异步调用(带有Promise)?

来自分类Dev

关于使用存储在记录中的数据库名称的跨数据库子查询

Related 相关文章

  1. 1

    如何使用LINQ异步调用带有子记录的数据库?

  2. 2

    如何处理对MySQL数据库的异步调用

  3. 3

    为什么需要异步调用数据库?

  4. 4

    等待GWT异步调用中的数据库结果

  5. 5

    如何处理来自带有回调的多个ajax异步调用的数据?

  6. 6

    如何使用LINQ更新数据库中的记录?

  7. 7

    如何使用LINQ更新数据库中的记录?

  8. 8

    使用Ajax对数据库进行异步调用时,ERR_CONNECTION_RESET *仅*-CakePHP

  9. 9

    使用Ajax对数据库进行异步调用时,ERR_CONNECTION_RESET *仅*-CakePHP

  10. 10

    使用递归的异步数据库调用

  11. 11

    玩!框架异步调用修改数据库的相同对象

  12. 12

    如何使用 mockito 存根异步调用?

  13. 13

    如何使用 Spring-data-JPA 在带有 crudRepository 的 MySQL 数据库中附加多条记录?

  14. 14

    如何异步将多个记录提交到数据库?

  15. 15

    如何在带有thunk的react-redux挂钩中进行异步调用?

  16. 16

    在异步调用axios API之后使用带有React Hook和Redux的SetState

  17. 17

    将await与异步数据库调用一起使用有什么好处

  18. 18

    带有异步调用的 ES6 循环

  19. 19

    如何正确进行异步/并行数据库调用

  20. 20

    如何使用分组依据并使用 linq 对数据库记录求和

  21. 21

    使用 patchEntity 更新带有 cakephp 的数据库记录的问题

  22. 22

    如何在asp.net mvc中使用Linq从数据库中删除多个记录

  23. 23

    如何从MVC控制器调用带有参数的数据库“选择”存储过程?

  24. 24

    如何在Diesel中对Postgres数据库执行带有子查询的删除?

  25. 25

    Firebase数据库子创建问题(带有模型)

  26. 26

    Scala异步数据库调用

  27. 27

    节点JS异步数据库调用

  28. 28

    HTML5 / Javascript GeoLocation:将数据传递给回调函数-或-暂停异步调用(带有Promise)?

  29. 29

    关于使用存储在记录中的数据库名称的跨数据库子查询

热门标签

归档