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.
All other models are seeded correctly and are considered in migration only if they are modified.
I am using ASP .NET Core 2.1 with Individual Authentication
DbContext Class for seeding
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
#region Seed-Roles
modelBuilder.Entity<IdentityRole>().HasData(new IdentityRole { Name = "SuperAdmin", NormalizedName = "SuperAdmin".ToUpper() });
modelBuilder.Entity<IdentityRole>().HasData(new IdentityRole { Name = "Owner", NormalizedName = "Owner".ToUpper() });
modelBuilder.Entity<IdentityRole>().HasData(new IdentityRole { Name = "Admin", NormalizedName = "Admin".ToUpper() });
modelBuilder.Entity<IdentityRole>().HasData(new IdentityRole { Name = "Tester", NormalizedName = "Tester".ToUpper() });
modelBuilder.Entity<IdentityRole>().HasData(new IdentityRole { Name = "User", NormalizedName = "User".ToUpper() });
modelBuilder.Entity<IdentityRole>().HasData(new IdentityRole { Name = "Developer", NormalizedName = "Developer".ToUpper() });
#endregion
}
}
Migration
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" }
});
}
If i'm doing it wrong please update me what is the correct behavior of seeding roles.