将Find()方法与async/await一起使用



我有MVC控制器的同步方法,我想让它异步它在控制器中有这个

var user = _context.Users.Find(UserId);
cart.User = user;
_context.SaveChanges();

但当我改为等待时,

var user =await _context.Users.Find(UserId);
cart.User = user;
_context.SaveChanges();

它给我错误

User不包含"Getawaiter"的定义,也没有可访问的扩展接受User类型的第一个参数。。。。。。。

但如果我将其更改为

var user = await _context.Users.Where(p=>p.Id==UserId).FirstOrDefaultAsync();
cart.User = user;
_context.SaveChanges(); 

它运行良好。我不能将find方法与async/await一起使用吗???

不能把await放在任何方法之前就让它异步。必须有一个异步版本的方法。

EFCore:DbSet.FindAsync((

EF:DbSet.FindAsync((

它运行良好。我不能将find方法与async/await一起使用吗???

出于同样的原因,您不能将.FirstOrDefault()await一起使用,并决定使用.FirstOrDefaultAsync();

您要查找的方法称为.FindAsync()

如果我把它写为响应,我很抱歉,但我还不能发表评论。在您的.NET版本中是否存在FindAsync()?最终你可以使用它。

最新更新