我有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()
?最终你可以使用它。