实体框架6 - 如何将此行转换为异步?

cho*_*bo2 14 .net entity-framework async-await entity-framework-6

我想知道如何将此语句更改为异步?

    var findBarCode = context.Barcodes
        .Where(x => x.Code == barcode)
        .Select(x => x.Product).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

我没有看到任何async where我可以使用的陈述.

Ask*_* B. 30

有一个称为扩展方法FirstOrDefaultAsyncSystem.Data.Entity:

using System.Data.Entity;
...
var findBarCode = await context.Barcodes
    .Where(x => x.Code == barcode)
    .Select(x => x.Product).FirstOrDefaultAsync();
Run Code Online (Sandbox Code Playgroud)

需要Entity Framework 6.0.

  • 感谢您提及扩展方法在System.Data.Entity中 (5认同)

AFD*_*AFD 12

SingleAsync或FindAsync怎么样?关于FirstOrDefault的不确定

请等待.

var findBarCode = await context.Barcodes
        .Where(x => x.Code == barcode)
        .SingleAsync(x => x.Product);
Run Code Online (Sandbox Code Playgroud)

另一种方式(可能很傻,因为我目前无法访问VS):

 var findBarCode = await context.Barcodes
            .Where(x => x.Code == barcode)
            .OrderBy(YOURCRITERIA)
            .Take(1)
            .Select(x => x.Product)
            .ToListAsync();
Run Code Online (Sandbox Code Playgroud)

  • 这些方法隐藏在`System.Data.Entity`中,因此您可能无法立即在Intellisense中看到它们. (8认同)
  • 有一个`FirstOrDefaultAsync`和一个`FirstAsync`. (5认同)
  • 顺便说一句,这个命名空间在 `EntityFramework` 程序集中,所以你需要在你的项目中添加对它的引用,然后才能使用 `System.Data.Entity` (2认同)