ASP.NET MVC 6 - 将 NOT NULL 分配给 Entity Framework 7 中的主键
ASP.NET MVC 6 - Assigning NOT NULL to the Primary Key in Entity Framework 7
代码:
migrationBuilder.AddPrimaryKey("AspNetRoles", "PK_AspNetRoles", new[] { "Id" }, isClustered: true);
我收到的错误消息是 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 早期版本中的错误或缺失功能?
代码:
migrationBuilder.AddPrimaryKey("AspNetRoles", "PK_AspNetRoles", new[] { "Id" }, isClustered: true);
我收到的错误消息是 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 早期版本中的错误或缺失功能?