如何实现IdentityRole(dbo.AspNetRoles)和自定义实体之间的关系?

时间:2015-03-06 18:12:51

标签: c# asp.net-mvc entity-framework asp.net-identity

我正在使用类似于MVC模板项目的项目。

我创建了一些我希望在数据库中表示的模型。我可以使用DbContext类创建它们,问题是将我的类的RoleId与ASP.Net Identity的Role表的id连接。

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:3)

假设RoleDependent是您的实体类。然后:

1)如果您需要{strong>一对多(1:N)关系 beetween RoleDependentRole

public class RoleDependent
{
    public Int32 Id { get; set; }
    public virtual IdentityRole IdentityRole { get; set; }
}

将导致以下迁移:

CreateTable("dbo.RoleDependents",
c => new
    {
        Id = c.Int(nullable: false, identity: true),
        IdentityRole_Id = c.String(maxLength: 128),
    })
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.AspNetRoles", t => t.IdentityRole_Id)
.Index(t => t.IdentityRole_Id);

2)如果您需要{strong>一对一(1:1)关系 beetween RoleDependentRole

public class RoleDependent
{
    public String Id { get; set; }
    [ForeignKey("Id")]
    public virtual IdentityRole IdentityRole { get; set; }
}

会导致迁移:

CreateTable("dbo.RoleDependents",
    c => new
        {
            Id = c.String(nullable: false, maxLength: 128),
        })
    .PrimaryKey(t => t.Id)
    .ForeignKey("dbo.AspNetRoles", t => t.Id)
    .Index(t => t.Id);