【发布时间】:2015-01-20 20:08:17
【问题描述】:
我需要在 ASP.NET MVC 5 中的角色标识表中添加一个额外的字段。
我使用迁移。
我已经为角色添加了一个扩展,例如:
public class ApplicationRole : IdentityRole
{
public ApplicationRole() : base() { }
public ApplicationRole(string name)
: base(name)
{
}
public virtual Project Project { get; set; }
}
我得到的迁移课程是:
public partial class ProjectToIdentity : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.Projects",
c => new
{
ID = c.Int(nullable: false, identity: true),
ProjectName = c.String(maxLength: 100),
})
.PrimaryKey(t => t.ID);
AddColumn("dbo.AspNetRoles", "Discriminator", c => c.String(nullable: false, maxLength: 128));
AddColumn("dbo.AspNetRoles", "Project_ID", c => c.Int());
CreateIndex("dbo.AspNetRoles", "Project_ID");
AddForeignKey("dbo.AspNetRoles", "Project_ID", "dbo.Projects", "ID");
}
public override void Down()
{
DropForeignKey("dbo.AspNetRoles", "Project_ID", "dbo.Projects");
DropIndex("dbo.AspNetRoles", new[] { "Project_ID" });
DropColumn("dbo.AspNetRoles", "Project_ID");
DropColumn("dbo.AspNetRoles", "Discriminator");
DropTable("dbo.Projects");
}
}
问题是 - 什么是鉴别器列?我的模型中没有这样的列。迁移工具为什么要加这个字段,目的是什么?
【问题讨论】:
-
用于表继承方案。这是一个很好的描述weblogs.asp.net/manavi/…。
-
在这种情况下,有人能够摆脱
Discriminator列吗?我理解为什么 EF 添加它,但就我而言,我只想保留ApplicationRole- 不会有IdentityRoles。如果可以的话,我会使用abstract,但它在 nuget 包中,所以这是不可能的。
标签: asp.net .net asp.net-mvc entity-framework entity-framework-migrations