我正在使用ASP.NET Identity 2.0,根据我的理解使用实体框架。我很好奇为什么在DB上下文中没有设置DbSet<ApplicationUser>
属性?如果它们没有在上下文中按字面指定,它仍然如何使用相同的上下文。这些是否适用于基类?
我想写一个来自ApplicationUser
- &gt;的Linq查询ApplicationRoles
- &gt; ApplicationRole
(这是一个自引用属性)并且想要使用Linq to Entities,但是我在Google上找不到很多内容,并希望在编写Linq查询之前确保我的上下文正确。
ApplicationUser.cs
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
public ICollection<ApplicationUserRole> UserRoles { get; set; }
}
ApplicationRole.cs
public class ApplicationRole : IdentityRole
{
public ApplicationRole() : base() { }
public ApplicationRole(string name)
: base(name)
{ }
public ApplicationRole(string name, string description)
: base(name)
{
this.Description = description;
}
public string Description { get; set; }
public virtual ApplicationRole ParentRole { get; set; }
}
答案 0 :(得分:1)
我猜你有自己的DbContext,你只需要像这样扩展IdentityDbContext:
public class MyDbContext: IdentityDbContext<ApplicationUser>
一旦你扩展了这个,那么你应该在你的DbContext上提供Identity类(除了你数据库中已有的其他东西)。