9 votes

Comment spécifier une clé primaire composite en utilisant les migrations EFCore Code First ?

J'utilise Asp.Net Core 2.1, Mvc, c#, EF Core avec Code First et Migrations.

J'essaie de construire une table qui a une clé primaire composite dans le fichier Migration.Up() méthode :

migrationBuilder.CreateTable(
    name: "TagValueAttributes",
    columns: table => new {
        TagValueID = table.Column<Int64>(nullable: false),
        Identifier = table.Column<string>(nullable: false, unicode: true, maxLength: 256),
        Value = table.Column<string>(nullable: true, unicode: true, maxLength: 2048)
    },
    constraints: table => {
        table.PrimaryKey(
            name: "PK_TagValueAttributes",
            columns: // what goes here???
        )
    }
);

Je ne sais pas ce qu'il faut spécifier pour l'option columns du paramètre constraints table.PrimaryKey() appel. Je voudrais des colonnes TagValueID et Identifier pour former la clé composite.

Que dois-je spécifier pour le columns paramètre ?

15voto

Selmir Points 952

Pourquoi veux-tu mettre ça dans le Migration.Up() méthode ?

Vous pouvez le faire par l'intermédiaire de l'API Fluent dans votre DbContext en passant outre OnModelCreating() méthode :

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.Entity<TagValueAttributes>().HasKey(t => new { t.TagValueID, t.Identifier });
}

Si tu veux garder ça dans Migration.Up() alors faites-le :

table.PrimaryKey(
    name: "PK_TagValueAttributes",
    columns: t => new { t.Identifier, t.TagValueID }
);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X