我有这个班级
public class ApplicationUser : IdentityUser
{
public string Email { get; set; }
public string ConfirmationToken { get; set; }
public bool IsConfirmed { get; set; }
...
}
在 DbContext 类中,这就是我所做的
public partial class PickerDbContext : IdentityDbContext
{
public PickerDbContext():base("DefaultConnection")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ApplicationUser>().ToTable("Users");
modelBuilder.Entity<IdentityUser>().ToTable("Users");
modelBuilder.Entity<IdentityRole>().ToTable("Roles");
}
//public DbSet<License> Licenses { get; set; }
....
}
现在,当我尝试使用类似
的内容查询我的存储库中的Users
表时
var user = _db.Users.SingleOrDefault(u=>u.anyfield);
我认为它的返回类型为IdentityUser
而不是ApplicationUser
,因为当我执行u=>u.
智能感知选项时,不会显示ApplicationUser
我应该怎么做才能在Users
表中查询返回ApplicationUser
类型,为什么它会将返回类型设为IdentityUser
答案 0 :(得分:5)
因为IdentityDbContext不是您定义的类,而ApplicationUser是您定义的类。您创建继承自IdentityUser的ApplicationUser。您创建一个继承自IdentityDbContext的上下文。 IdentityDbContext公开DbSet。
如果您希望数据以ApplicationUser的形式返回,您可以执行以下操作:
context.Users.OfType<ApplicationUser>();
您也可以在自定义DbContext(未验证)中执行此操作:
public new DbSet<ApplicationUser> Users { get; set; }
虽然我没有测试过。