哪一种更好用?为什么?
ApplicationUser? user = await _userManager.FindByIdAsync(userId);
ApplicationUser? userOne = _userManager.Users.Where(u => u.Id == userId).Single();
在 Blazor .NET 8 中使用 ID 返回 ApplicationUser
如果
_userManager
下是EF,FindByIdAsync
可以返回已经追踪到的User
实体,无需访问数据库。
第二个总是以同步方式访问数据库,这意味着执行该查询的线程被阻塞,直到查询完成,这对于高吞吐量的.NET服务器来说是不利的。请使用
SingeAsync
或更好的 FirstAsync
来代替。
与第一种情况相同的行为,您可以直接从
FindAsync
使用 DbSet
实现:await _userManager.Users.FindAsync(userId);