Blazor .NET 8 LINQ 与异步函数

问题描述 投票:0回答:1

哪一种更好用?为什么?

ApplicationUser? user = await _userManager.FindByIdAsync(userId);
ApplicationUser? userOne = _userManager.Users.Where(u => u.Id == userId).Single();

在 Blazor .NET 8 中使用 ID 返回 ApplicationUser

c# .net linq blazor usermanager
1个回答
0
投票
  • 如果

    _userManager
    下是EF,
    FindByIdAsync
    可以返回已经追踪到的
    User
    实体,无需访问数据库。

  • 第二个总是以同步方式访问数据库,这意味着执行该查询的线程被阻塞,直到查询完成,这对于高吞吐量的.NET服务器来说是不利的。请使用

    SingeAsync
    或更好的
    FirstAsync
    来代替。

  • 与第一种情况相同的行为,您可以直接从

    FindAsync
    使用
    DbSet
    实现:
    await _userManager.Users.FindAsync(userId);

© www.soinside.com 2019 - 2024. All rights reserved.