使用第三个表将ASP.Net标识转换为自定义表引用

时间:2017-06-19 16:22:10

标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-identity

我想知道如何使用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;
        }
    }

谢谢!

1 个答案:

答案 0 :(得分:0)

根据您的代码,您需要在ApplicationUserContext类上添加以下内容:

public virtual ICollection<ApplicationUser> Users {get;set;}

您还需要确保您的dbcontext类具有一个返回类型为ApplicationUserContext的dbset的属性:

public DbSet<ApplicationUserContext> Courses { get; set; }

它可能已经有了这个。

这样做是在两个类之间建立多对多的关系,EF将生成一个映射表来跟踪这种关系。