ASP.NET标识外键作为主键?

时间:2015-03-24 03:55:11

标签: asp.net-mvc foreign-keys primary-key asp.net-identity database-migration

在我的ASP.NET MVC应用程序中,我定制了Identity以使用另一个表来存储用户的信息,例如名字,姓氏和生日。这是关联代码:

public class ApplicationUser : IdentityUser
{
   public virtual UserInfo Info { get; set; }
}

public class UserInfo
{
   public int Id { get; set; }
   public string FirstName { get; set;
   public string LastName { get; set; }
   public DateTime BirthDate { get; set; }
}

但是如何使用ApplicationUser类的主键作为UserInfo的主键,以便您知道这些信息所属的用户帐户?

1 个答案:

答案 0 :(得分:0)

ApplicationUser的主键将是默认类型String,因此首先您需要更改您的从属类,以使其具有字符串类型的键。

public class UserInfo
{
   public string Id { get; set; }
   public string FirstName { get; set;
   public string LastName { get; set; }
   public DateTime BirthDate { get; set; }
}

然后在IdentityDbContext实现中,您需要创建一个映射来创建您之后的1:1关系。

public class MyIdentityDbContext : IdentityDbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

        modelBuilder.Entity<ApplicationUser>().HasRequired(x => x.Info).WithRequiredDependent();
        base.OnModelCreating(modelBuilder);
    }
}

这应该有用