11

私はこのクラスを持っています:

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

テーブルは問題ありませんが、コードからObjectiveプロパティを削除します。

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

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

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

なぜこれが起こるのか手がかりはありますか?

4

1 に答える 1

12

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

于 2012-07-25T10:00:56.967 に答える