我试图找到一个拥有自定义属性"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类
AppDbContext.cs
namespace MyApp{
public class AppDbContext : IdentityDbContext<AppUser>{
public AppDbContext(): base("DefaultConnection"){}
}
}
应用程序用户.cs
namespace MyApp{
public class AppUser : IdentityUser{
public string Token {get;set;}
}
}
错误为"System.Data.Entity.IDbSet不包含'Where'的定义,并且找不到接受类型为'System.Data.Eentity.IDbSet'的第一个参数的扩展方法'Where](是否缺少using指令或程序集引用?)
如果没有Where行,我的应用程序将正确运行,使用我的Token将用户添加到数据库,等等。我需要做什么才能通过该自定义字段找到AppUser??
在Visual Studio中,您可以滚动显示错误行,它将建议相应的缺少using
。
请记住在代码中包含以下行的.SingleOrDefault()
语句:
var found = adb.Users.Where(u => u.Token == "ABDJ_SJ_ETC").SingleOrDefault()
问题是Visual Studio没有建议我解决任何依赖项,我也不知道需要使用哪个指令,
我添加了
using System.Linq;
这就解决了的问题
感谢@p.s.w.g帮助我
使用底部代码获取自定义属性的自定义ApplicationUser
var context=new AuthContext();
var result=context.Users.OfType<ApplicationUser>.SingleOrDefault(item => item.NationalCode == "");
NationalCode是ApplicationUser中的自定义属性ApplicationUser是实现IdentityUser 的自定义用户
public class ApplicationUser : IdentityUser
{
public string NationalCode { get; set; }
}