我想知道如何使用ASP.NET中的Identity来创建用于链接2个不同表的表。
例如我们有ASP.NetUsers和ASP.NetRoles。默认身份提供程序将生成ASP.NetUsersRoles,用于存储分配给用户的角色。
我想对其他2个表做同样的事情。我们假设我有默认用户表和一个名为Context的表。
我想使用ASP.NetUsers,Contexts和ASP.NetUsersContexts来链接用户一个或多个上下文。
我现在拥有的是带有Asp.Net Users表中的外键的Context表,我想摆脱它并使用关系表。可能吗?
这就是我现在的方式:
public class ApplicationUser : IdentityUser
{
public virtual ApplicationUserProfile UserProfile {get;set;}
public virtual ICollection<ApplicationUserContext> UserContext { get; set; }
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;
}
}
谢谢!
答案 0 :(得分:0)
根据您的代码,您需要在ApplicationUserContext类上添加以下内容:
public virtual ICollection<ApplicationUser> Users {get;set;}
您还需要确保您的dbcontext类具有一个返回类型为ApplicationUserContext的dbset的属性:
public DbSet<ApplicationUserContext> Courses { get; set; }
它可能已经有了这个。
这样做是在两个类之间建立多对多的关系,EF将生成一个映射表来跟踪这种关系。