8

tengo esta clase:EF columna de cambio de nombre 4.3 migración en lugar de eliminarlo

public class HabitDo{ 
    public int? HabitId { get; set; } 
    virtual public Habit Habit { get; set; } 

    public int DoId { get; set; } 
    virtual public Do Do { get; set; } 

    public string Restriction { get; set; } 

    public int? ObjectiveId { get; set; } 
    public Objective Objective { get; set; } 

    public virtual ICollection<DoObjective> Objectives { get; set; } 
} 

La tabla está muy bien, pero luego me retire del código de la propiedad Objetivo:

public class HabitDo{ 
    public int? HabitId { get; set; } 
    virtual public Habit Habit { get; set; } 

    public int DoId { get; set; } 
    virtual public Do Do { get; set; } 

    public string Restriction { get; set; } 

    public virtual ICollection<DoObjective> Objectives { get; set; } 
} 

Y al llamar actualización de base de datos desde la consola de administrador de EF cambia el nombre de la columna de la ObjectiveId en lugar de dejarla caer:

EXECUTE sp_rename @objname = N'HabitDoes.ObjectiveId', @newname = N'Objective_Id', @objtype = N'COLUMN' 

Alguna pista ¿Por qué sucede esto?

Respuesta

6

Es porque probablemente todavía tenga la relación de uno a varios existente: acaba de eliminar la propiedad de navegación de un lado de la relación, pero el otro lado aún existe. Debido a eso, EF debe mantener la columna FK en su tabla. EF simplemente cambia el nombre de la columna FK oculta a la convención de nomenclatura predeterminada.

+1

¡Fue exactamente eso! Gracias – joaoruimartins

Cuestiones relacionadas