为什么在 Entity Framework Core 2.2 中找不到 FirstOrDefaultAsync 方法?

5

我正在使用以下技术制作一个Web应用程序 -

  1. ASP.NET Core
  2. Entity Framework Core
  3. SQlite数据库
  4. Angular SPA (ng 7)

我已经创建了一个名为User的模型,并添加了以下属性 -

public class User
{
    public int Id { get; set; }
    public string UserName { get; set; }
    public byte[] PasswordHash { get; set; }
    public byte[] PasswordSalt { get; set; }
}

我选择的是模型优先方法,并根据数据迁移创建表。
public DbSet<User> Users { get; set; }

但是每当我尝试使用以下内容查找用户时 -

public async Task<User> Login(string userName, string password)
{
  var user = await _context.Users.
}

它没有显示给我FirstOrDefaultAsync方法。我很困惑为什么会这样?

以下是我在API项目中使用的版本-

<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.2.2" />

你了解 FirstOrDefault 方法吗?如果你添加了 var user = _context.Students.FirstOrDefaultAsync()using Microsoft.EntityFrameworkCore;,并且构建你的项目,你会收到任何错误吗? - Edward
@Tao Zhou, 它没有显示给我FirstOrDefault,但是我找到了Add(),AddRange(),Find(),FindAsync()等。 - bulbul bd
是否有演示可以重现您的问题?它应该使用 using Microsoft.EntityFrameworkCore; 存在。 - Edward
没错,它可以运行。谢谢你的帮助。 - bulbul bd
3个回答

14

你忘记添加对Entity Framework Core的引用 'using Microsoft.EntityFrameworkCore;'

Tip: 若按下CTRL+.会显示即时修复。


1
我不这么认为。 - bulbul bd
你是否执行了 var user = await _context.Users.FirstOrDefaultAsync(),然后按下了那个键却没有任何显示? - Tiago Silva
是的,我正在做那个,但我找不到FirstOrDefaultAsync()方法。 - bulbul bd
2
可能是Visual Studio出现了故障,无法跟踪您的软件包,请尝试清理解决方案,关闭Visual Studio并重新打开它,然后再次构建,并稍后应用答案中提到的提示。 - Tiago Silva
我清理了Visual Studio Code并重新打开了项目。但仍然没有显示FirstOrDefault()和FirstOrDefaultAsync()方法,而是显示其他的方法。 - bulbul bd

1

如果有像我这样的新手遇到此问题,只需添加以下内容:

using System.Linq;


欢迎来到stackoverflow。这更适合作为评论而不是问题。请参阅:https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can-i-do-instead - shox

0
LINQ操作符(例如Where(...),OrderBy(...)等)没有异步版本,因为这些方法仅构建LINQ表达式树,不会导致查询在数据库中执行。

请参阅Microsoft文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接