ASP.NET MVC 6 - Assegnazione NOT NULL alla chiave primaria in Entity Framework 7

asp.net asp.net-core-mvc c# entity-framework-core

Domanda

Codice:

migrationBuilder.AddPrimaryKey("AspNetRoles", "PK_AspNetRoles", new[] { "Id" }, isClustered: true);

Ricevo il messaggio di errore come Cannot define PRIMARY KEY constraint on nullable column in table 'AspNetRoles'.

Namespace of MigrationBuilder - Microsoft.Data.Entity.Relational.Migrations.Builders

Come assegnare NOT NULL al codice sopra in ASP.NET MVC 6

Risposta popolare

Per una soluzione temporanea per poter scrivere alcune entità EF in codice e avanzare, ho commentato la parte dello script di migrazione che trattava quelle chiavi.

Ovviamente questo macella le relazioni nelle tabelle di utenti e ruoli ASP.NET e non è una soluzione a lungo termine praticabile, presumo che verrà risolto o qualcuno troverà una soluzione reale ad un certo punto.

Alcune delle righe che ho commentato (ho avuto lo stesso errore con gli utenti una volta che ho cambiato ruoli).

        //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);

Questo è presumibilmente un bug o una caratteristica mancante nella primissima build di EF7?




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché