簡體   English   中英

ASP.NET遷移中的Discriminator列是什么?

[英]What is a Discriminator column in ASP.NET Migrations?

我需要在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");
    }
}

問題是 - 什么是Discriminator專欄? 我的模型中沒有這樣的專欄。 為什么遷移工具會添加此字段以及它具有什么目標?

好吧,快速回答理解,或者至少使其更清晰。

正如Jasen所說,你可以在http://weblogs.asp.net/manavi/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table上閱讀關於每層次表(TPH)的內容。 -per-hierarchy-tph或任何其他鏈接。 但是,說實話,從第一次開始就不那么容易理解。

這是一個快速回答:

  1. 嘗試使用繼承自IdentityRole的ApplicationRole (已發布的類)來創建新角色
  2. 創建新角色后,請查看“識別”字段。

如您所見 - 新記錄在“歧視”列中包含“ApplicationRole”。 所以說 - 該列包含繼承IdentityRole的新類的名稱。 因此,可能會有更多的類,它們將繼承IdentityRole,但對於每個記錄,Identity系統將存儲該值 - 使用創建記錄的類。

在此輸入圖像描述

如圖所示,ApplicationRole Discriminator僅出現在由類創建的記錄中,稱為繼承IdentityRole的ApplicationRole。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM