8

を削除私はこのクラスを持っている:EF 4.3移行リネーム列の代わりに、それを

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

テーブルだけで結構ですが、その後、私はコードから目的プロパティを削除します。

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

、呼び出しマネージャコンソールEFからのupdate-databaseは、削除する代わりにObjectiveId列の名前を変更します。

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

すべての手がかりなぜこれが起こるのですか?

答えて

6

これは、おそらく既存の一対多の関係があるからです。関係の一方の側でナビゲーションプロパティを削除したにもかかわらず、もう一方の側がまだ存在するからです。そのため、EFはテーブルにFK列を保持する必要があります。 EFは、隠しFK列の名前をデフォルトの命名規則に変更します。

+1

それはまさにそれでした!ありがとう – joaoruimartins

関連する問題