8

mam tej klasy:EF 4.3 migracja kolumna zmiana nazwy zamiast usuwania go

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

Stół jest w porządku, ale potem usunąć z kodu właściwość Cel:

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

A gdy dzwoni baza danych aktualizacji z konsoli menedżera EF zmienia nazwę kolumny Obiektywny zamiast ją upuszczać:

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

Wszelkie wskazówki dlaczego tak się dzieje?

Odpowiedz

6

To dlatego, że prawdopodobnie nadal istnieje relacja jeden-do-wielu - właśnie usunąłeś właściwość nawigacji po jednej stronie relacji, ale druga strona nadal istnieje. Z tego powodu EF musi przechowywać kolumnę FK w twoim stole. EF po prostu zmienia nazwę ukrytej kolumny FK na domyślną konwencję nazewnictwa.

+1

To było dokładnie to! Dzięki – joaoruimartins