通过自定义 属性 身份查找用户 asp.Net mvc

Find user by custom property identity asp.Net mvc

我试图找到一个用户,该用户具有我通过数据库迁移添加的自定义 属性 "Token",我尝试使用:

var adb = new AppDbContext();
var found = adb.Users.Where(u => u.Token == "ABDJ_SJ_ETC");//Error
//OR found = adb.Users.SingleOrDefault(); Error too

我的 AppDbContext class

AppDbContext.cs

namespace MyApp{
    public class AppDbContext : IdentityDbContext<AppUser>{
         public AppDbContext(): base("DefaultConnection"){}
    }
}

AppUser.cs

namespace MyApp{
    public class AppUser : IdentityUser{
        public string Token {get;set;}
    }
}

错误是“System.Data.Entity.IDbSet 不包含 'Where' 的定义,并且找不到接受类型为 'System.Data.Entity.IDbSet 的第一个参数的扩展方法 'Where'(您是否缺少 using 指令或程序集引用?)

如果没有 Where 行,我的应用程序可以正常运行,使用我的令牌将用户添加到数据库,等等。 我需要做什么才能通过该自定义字段找到 AppUser?

问题是 Visual Studio 没有建议我解决任何依赖关系,我不知道需要使用哪个指令,

我加了

using System.Linq;

问题就解决了

感谢@p.s.w.g 帮助我

在Visual Studio中,您可以将错误行翻转过来,它会提示相应的缺失using

记得在您的代码中包含 .SingleOrDefault() 语句行:

var found = adb.Users.Where(u => u.Token == "ABDJ_SJ_ETC").SingleOrDefault()

使用底部代码获取自定义 A​​pplicationUser 与自定义 属性

的身份
var context=new AuthContext();
var result=context.Users.OfType<ApplicationUser>.SingleOrDefault(item => item.NationalCode == "");

NationalCodeA​​pplicationUser 中的自定义 属性 A​​pplicationUser 是实现 IdentityUser

的自定义用户
public class ApplicationUser :  IdentityUser
{
    public string NationalCode { get; set; }
}