title: why seeded roles are deleted on every migration in asp .net core 2.1?
body: <p>I am getting a strange behavior of seeded roles on every migration. No matter what changes you have made, migration will delete the seeded roles and will insert them again. Migration given below is created when no modification is done in the project.</p>
  
  <p>All other models are seeded correctly and are considered in migration only if they are modified.</p>
  
  <p>I am using ASP .NET Core 2.1 with Individual Authentication </p>
  
  <p><strong>DbContext Class for seeding</strong></p>
  
  <pre><code> public class ApplicationDbContext : IdentityDbContext
  {
      public ApplicationDbContext(DbContextOptions&lt;ApplicationDbContext&gt; options)
          : base(options)
      {
      }
  
      protected override void OnModelCreating(ModelBuilder modelBuilder)
      {
          base.OnModelCreating(modelBuilder);
  
          #region Seed-Roles
  
          modelBuilder.Entity&lt;IdentityRole&gt;().HasData(new IdentityRole { Name = "SuperAdmin", NormalizedName = "SuperAdmin".ToUpper() });
          modelBuilder.Entity&lt;IdentityRole&gt;().HasData(new IdentityRole { Name = "Owner", NormalizedName = "Owner".ToUpper() });
          modelBuilder.Entity&lt;IdentityRole&gt;().HasData(new IdentityRole { Name = "Admin", NormalizedName = "Admin".ToUpper() });
          modelBuilder.Entity&lt;IdentityRole&gt;().HasData(new IdentityRole { Name = "Tester", NormalizedName = "Tester".ToUpper() });
          modelBuilder.Entity&lt;IdentityRole&gt;().HasData(new IdentityRole { Name = "User", NormalizedName = "User".ToUpper() });
          modelBuilder.Entity&lt;IdentityRole&gt;().HasData(new IdentityRole { Name = "Developer", NormalizedName = "Developer".ToUpper() });
  
          #endregion
      }
  }
  </code></pre>
  
  <p><strong>Migration</strong></p>
  
  <pre><code>protected override void Up(MigrationBuilder migrationBuilder)
      {
          migrationBuilder.DeleteData(
              table: "AspNetRoles",
              keyColumns: new[] { "Id", "ConcurrencyStamp" },
              keyValues: new object[] { "4ae1956e-7895-4b0f-a390-22b5c41c1a62", "67b6f36e-5a3c-456b-89ef-c667cf9fe0d3" });
  
          migrationBuilder.DeleteData(
              table: "AspNetRoles",
              keyColumns: new[] { "Id", "ConcurrencyStamp" },
              keyValues: new object[] { "55ebaa87-e350-4d88-8d6f-2c7d833dd24d", "ed91ae85-918f-4651-b7f9-42f6dd90d9b2" });
  
          migrationBuilder.DeleteData(
              table: "AspNetRoles",
              keyColumns: new[] { "Id", "ConcurrencyStamp" },
              keyValues: new object[] { "6ae683e2-5df3-425f-8df7-66581ce56259", "6a4ff0dc-f82f-4c8d-85a1-0258bbf905d7" });
  
          migrationBuilder.DeleteData(
              table: "AspNetRoles",
              keyColumns: new[] { "Id", "ConcurrencyStamp" },
              keyValues: new object[] { "b06b021d-b369-44b3-a5d9-eeb3ef8e245d", "1363d06f-a0cb-4d10-8495-866c219f5560" });
  
          migrationBuilder.DeleteData(
              table: "AspNetRoles",
              keyColumns: new[] { "Id", "ConcurrencyStamp" },
              keyValues: new object[] { "b5331aad-70ec-47a2-8dd0-bc2508bdc353", "ae98d41a-e8fa-46dd-b081-96f9a1934e1e" });
  
          migrationBuilder.DeleteData(
              table: "AspNetRoles",
              keyColumns: new[] { "Id", "ConcurrencyStamp" },
              keyValues: new object[] { "b9fec2b5-6fd2-46a5-a960-a8d26f16d269", "413922ea-76f0-4d2d-8f1a-d9157fb31df0" });
  
          migrationBuilder.InsertData(
              table: "AspNetRoles",
              columns: new[] { "Id", "ConcurrencyStamp", "Name", "NormalizedName" },
              values: new object[,]
              {
                  { "34e62595-2afc-43f9-bbcd-267773129d69", "c47b3378-ef47-4661-8a01-ceb2fbe34d7c", "SuperAdmin", "SUPERADMIN" },
                  { "bc020d73-e415-4d4e-8dfe-577d81755f80", "77d4f05b-6677-4e99-9ada-3f6ec083c14b", "Owner", "OWNER" },
                  { "cbfdbeb0-f800-4b42-b735-db1449fcc4e4", "2b8f6650-e2ee-46c1-a70f-36725fb893b3", "Admin", "ADMIN" },
                  { "cd0e178d-f9cb-448e-8ecc-49914aa63c5d", "23ee6cfe-4bc2-4c6c-847a-d03aa0087e1f", "Tester", "TESTER" },
                  { "4572a259-0d7c-4d1c-ad1d-e0230b7dd1fb", "bcc79860-9207-42bd-8a9c-8aeef0b5fe56", "User", "USER" },
                  { "334fd762-7f37-48aa-afdc-a87ef8d0593e", "d929467e-44be-4a94-912f-071702316c85", "Developer", "DEVELOPER" }
              });
      }
  
      protected override void Down(MigrationBuilder migrationBuilder)
      {
          migrationBuilder.DeleteData(
              table: "AspNetRoles",
              keyColumns: new[] { "Id", "ConcurrencyStamp" },
              keyValues: new object[] { "334fd762-7f37-48aa-afdc-a87ef8d0593e", "d929467e-44be-4a94-912f-071702316c85" });
  
          migrationBuilder.DeleteData(
              table: "AspNetRoles",
              keyColumns: new[] { "Id", "ConcurrencyStamp" },
              keyValues: new object[] { "34e62595-2afc-43f9-bbcd-267773129d69", "c47b3378-ef47-4661-8a01-ceb2fbe34d7c" });
  
          migrationBuilder.DeleteData(
              table: "AspNetRoles",
              keyColumns: new[] { "Id", "ConcurrencyStamp" },
              keyValues: new object[] { "4572a259-0d7c-4d1c-ad1d-e0230b7dd1fb", "bcc79860-9207-42bd-8a9c-8aeef0b5fe56" });
  
          migrationBuilder.DeleteData(
              table: "AspNetRoles",
              keyColumns: new[] { "Id", "ConcurrencyStamp" },
              keyValues: new object[] { "bc020d73-e415-4d4e-8dfe-577d81755f80", "77d4f05b-6677-4e99-9ada-3f6ec083c14b" });
  
          migrationBuilder.DeleteData(
              table: "AspNetRoles",
              keyColumns: new[] { "Id", "ConcurrencyStamp" },
              keyValues: new object[] { "cbfdbeb0-f800-4b42-b735-db1449fcc4e4", "2b8f6650-e2ee-46c1-a70f-36725fb893b3" });
  
          migrationBuilder.DeleteData(
              table: "AspNetRoles",
              keyColumns: new[] { "Id", "ConcurrencyStamp" },
              keyValues: new object[] { "cd0e178d-f9cb-448e-8ecc-49914aa63c5d", "23ee6cfe-4bc2-4c6c-847a-d03aa0087e1f" });
  
          migrationBuilder.InsertData(
              table: "AspNetRoles",
              columns: new[] { "Id", "ConcurrencyStamp", "Name", "NormalizedName" },
              values: new object[,]
              {
                  { "6ae683e2-5df3-425f-8df7-66581ce56259", "6a4ff0dc-f82f-4c8d-85a1-0258bbf905d7", "SuperAdmin", "SUPERADMIN" },
                  { "55ebaa87-e350-4d88-8d6f-2c7d833dd24d", "ed91ae85-918f-4651-b7f9-42f6dd90d9b2", "Owner", "OWNER" },
                  { "4ae1956e-7895-4b0f-a390-22b5c41c1a62", "67b6f36e-5a3c-456b-89ef-c667cf9fe0d3", "Admin", "ADMIN" },
                  { "b5331aad-70ec-47a2-8dd0-bc2508bdc353", "ae98d41a-e8fa-46dd-b081-96f9a1934e1e", "Tester", "TESTER" },
                  { "b9fec2b5-6fd2-46a5-a960-a8d26f16d269", "413922ea-76f0-4d2d-8f1a-d9157fb31df0", "User", "USER" },
                  { "b06b021d-b369-44b3-a5d9-eeb3ef8e245d", "1363d06f-a0cb-4d10-8495-866c219f5560", "Developer", "DEVELOPER" }
              });
      }
  </code></pre>
  
  <p>If i'm doing it wrong please update me what is the correct behavior of seeding roles.   </p>