コード:
migrationBuilder.AddPrimaryKey("AspNetRoles", "PK_AspNetRoles", new[] { "Id" }, isClustered: true);
Cannot define PRIMARY KEY constraint on nullable column in table 'AspNetRoles'.
というエラーメッセージが表示されCannot define PRIMARY KEY constraint on nullable column in table 'AspNetRoles'.
MigrationBuilderの名前空間 - Microsoft.Data.Entity.Relational.Migrations.Builders
ASP.NET MVC 6で上記のコードにNOT NULL
を割り当てる方法
いくつかのコードファーストEFエンティティを記述して進めるための一時的な回避策として、これらのキーを扱うマイグレーションスクリプトの部分をコメントアウトしました。
明らかに、このユーザーはASP.NETユーザーとロールテーブルの関係を把握しており、長期的な解決策ではありません。固定されているか、誰かがある時点で本当の解決策を見つけるだろうと思います。
私がコメントした行のいくつか(ロールを変更しても、ユーザーと同じエラーが出ました)。
//migrationBuilder.AddPrimaryKey("AspNetRoles", "PK_AspNetRoles", new[] { "Id" }, isClustered: true);
//migrationBuilder.AddPrimaryKey("AspNetUsers", "PK_AspNetUsers", new[] { "Id" }, isClustered: true);
....
//migrationBuilder.AddForeignKey(
// "AspNetRoleClaims",
// "FK_AspNetRoleClaims_AspNetRoles_RoleId",
// new[] { "RoleId" },
// "AspNetRoles",
// new[] { "Id" },
// cascadeDelete: false);
//migrationBuilder.AddForeignKey(
// "AspNetUserClaims",
// "FK_AspNetUserClaims_AspNetUsers_UserId",
// new[] { "UserId" },
// "AspNetUsers",
// new[] { "Id" },
// cascadeDelete: false);
//migrationBuilder.AddForeignKey(
// "AspNetUserLogins",
// "FK_AspNetUserLogins_AspNetUsers_UserId",
// new[] { "UserId" },
// "AspNetUsers",
// new[] { "Id" },
// cascadeDelete: false);
...
//migrationBuilder.DropForeignKey("AspNetRoleClaims", "FK_AspNetRoleClaims_AspNetRoles_RoleId");
//migrationBuilder.DropPrimaryKey("AspNetRoles", "PK_AspNetRoles");
//migrationBuilder.AddForeignKey(
// "AspNetRoleClaims",
// "FK_AspNetRoleClaims_AspNetRoles_RoleId",
// new[] { "RoleId" },
// "AspNetRoles",
// new[] { "Id" },
// cascadeDelete: false);
//migrationBuilder.AddForeignKey(
// "AspNetUserLogins",
// "FK_AspNetUserLogins_AspNetUsers_UserId",
// new[] { "UserId" },
// "AspNetUsers",
// new[] { "Id" },
// cascadeDelete: false);
これはおそらく、EF7の非常に初期のビルドでのバグや欠けている機能でしょうか?