ASP.NET MVC 6 - 为实体框架7中的主键分配NOT NULL

Pro*_*mer 6 c# asp.net entity-framework-core asp.net-core-mvc

码:

migrationBuilder.AddPrimaryKey("AspNetRoles", "PK_AspNetRoles", new[] { "Id" }, isClustered: true);
Run Code Online (Sandbox Code Playgroud)

我收到错误消息为 Cannot define PRIMARY KEY constraint on nullable column in table 'AspNetRoles'.

MigrationBuilder的命名空间 - Microsoft.Data.Entity.Relational.Migrations.Builders

如何NOT NULLASP.NET MVC 6中分配上面的代码

lko*_*lko 2

为了获得一个非常临时的解决方法,以便能够编写一些代码优先的 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);
Run Code Online (Sandbox Code Playgroud)

这可能是 EF7 早期版本中的一个错误或缺失的功能?