繁体   English   中英

如何为继承IdentityUser的类创建主键

[英]How do I create primary key for class that inherits IdentityUser

我已经使用Identity 2.0创建了MVC 5站点。 我使用整数作为主键。

当我尝试创建与ApplicationUser关联的模型时,出现以下错误:

EntityType'ApplicationUserRole'没有定义键。

我需要怎么做才能解决此错误?

IdentityModels.cs

public class ApplicationUserLogin : IdentityUserLogin<int> { }
public class ApplicationUserClaim : IdentityUserClaim<int> { }
public class ApplicationUserRole : IdentityUserRole<int> { }

public class ApplicationRole : IdentityRole<int, ApplicationUserRole>, IRole<int>
{
  public string Description { get; set; }

  public ApplicationRole() : base() { }
  public ApplicationRole(string name) : this()
  {
    this.Name = name;
  }

  public ApplicationRole(string name, string description) : this(name)
  {
    this.Description = description;
  }
}

public class ApplicationUser : IdentityUser<int, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>, IUser<int>
{
  public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser, int> manager)
  {
    var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
    return userIdentity;
  }

  public string FullName { get; set; }

  public virtual ICollection<Employee> Employees { get; set; }
}

员工

public class Employee
{
  public int Id { get; set; }

  public string Title { get; set; }

  public virtual ApplicationUser User { get; set; }
}

您将需要重写OnModelCreating方法来定义主键:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<ApplicationUserLogin>().HasKey<int>(l => l.UserId);
    modelBuilder.Entity<ApplicationRole>().HasKey<int>(r => r.Id);
    modelBuilder.Entity<ApplicationUserRole>().HasKey(r => new { r.RoleId, r.UserId });
}

这是一个类似的线程: 实体类型为MVC5 EF6的用户

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM