Potrzebowałem dodać dodatkowe pole do tabeli tożsamości ról w ASP.NET MVC 5.Co to jest kolumna Discriminator w migracji ASP.NET?
Używam migracji.
Dodałem rozszerzenie do roli takich jak:
public class ApplicationRole : IdentityRole
{
public ApplicationRole() : base() { }
public ApplicationRole(string name)
: base(name)
{
}
public virtual Project Project { get; set; }
}
moja klasa migracji, dostaję to:
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");
}
}
Pytanie brzmi - co to jest kolumna Discriminator? Nie mam takiej kolumny w moim modelu. Dlaczego narzędzie migracji dodaje to pole i jaki ma cel?
Służy do schematu dziedziczenia tabeli. Oto dobry opis http://weblogs.asp.net/manavi/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph. – Jasen
Czy ktoś był w stanie pozbyć się kolumny "Dyskryminatora" w tym scenariuszu? Rozumiem, dlaczego EF dodaje to, ale w moim przypadku chcę tylko utrzymać "ApplicationRole" - nie będzie "IdentityRole". Uczyniłbym to "abstrakcyjnym", gdybym mógł, ale jest w pakiecie nuget, więc nie wchodzi to w grę. –