Saltar al contenido

Cambie o cambie el nombre de un nombre de columna sin perder datos con Entity Framework Core 2.0

Solución:

EF Core crea sus migraciones comparando sus modelos con la instantánea de la base de datos actual (clase ac #). Luego lo usa para crear un archivo de migración que puede revisar. Si EF Core no siempre puede saber si reemplazó esta columna o creó una nueva columna. Cuando verifique su archivo de migración, asegúrese de que no haya caídas de columna, caídas de índice (relacionadas con esta columna), etc. Puede reemplazar todo esto con algo como esto:

migrationBuilder.RenameColumn(
    name: "ColumnA",
    table: "MyTable",
    newName: "ColumnB");

migrationBuilder.RenameColumn generalmente funciona bien, pero a veces también tienes que manejar índices.

migrationBuilder.RenameColumn(name: "Identifier", table: "Questions", newName: "ChangedIdentifier", schema: "dbo");

Ejemplo de mensaje de error al actualizar la base de datos:

Microsoft.Data.SqlClient.SqlException (0x80131904): el índice ‘IX_Questions_Identifier’ depende de la columna ‘Identificador’.

El índice ‘IX_Questions_Identifier’ depende de la columna ‘Identificador’.

RENAME COLUMN Identifier falló porque uno o más objetos acceden a esta columna.

En este caso, debe hacer el cambio de nombre de esta manera:

migrationBuilder.DropIndex(
    name: "IX_Questions_Identifier",
    table: "Questions");

migrationBuilder.RenameColumn(name: "Identifier", table: "Questions", newName: "ChangedIdentifier", schema: "dbo");

migrationBuilder.CreateIndex(
    name: "IX_Questions_ChangedIdentifier",
    table: "Questions",
    column: "ChangedIdentifier",
    unique: true,
    filter: "[ChangedIdentifier] IS NOT NULL");
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *