8

ho questa classe:EF 4.3 migrazione colonna rinomina invece di 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 tabella va bene, ma poi ho rimuovere dal codice della proprietà Obiettivo:

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; } 
} 

E quando si chiama update-database dal EF console direttore rinomina la colonna ObjectiveId invece di cadere:

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

degli indizi perché questo succede?

risposta

6

È perché probabilmente esiste ancora la relazione uno-a-molti esistente: è stata appena rimossa la proprietà di navigazione su un lato della relazione, ma l'altro lato esiste ancora. Per questo motivo EF deve mantenere la colonna FK nel tuo tavolo. EF rinomina semplicemente la colonna FK nascosta alla convenzione di denominazione predefinita.

+1

Era esattamente quello! Grazie – joaoruimartins

Problemi correlati