0

私には2つのクラスがあります:

public class Fighter
{
    public int FighterID { get; set; }
    public int DivsionID { get; set; }
    public string Name { get; set; }
    //...
    public virtual Division Division { get; set; }
}

public class Division
{
    public int DivisionID { get; set; }
    public string Name { get; set; }
    public int? FromWeight { get; set; }
    public int? ToWeight { get; set; }
    public ICollection<Fighter> Fighters { get; set; }
}

FightersテーブルにDivision_DivisionIDがあるのはなぜですか?DevisionIDはFKにすべきだと思いました。 ここに画像の説明を入力してください

4

2 に答える 2

2

You are mixing the EF FK Association concept with your database FK concept, they are not the same. The FK Association concept on EF was introduced so you could do things like lookups and data binding more easily (like DropDownList data binding for example).

The ER FK concept that is created in your table is a mapping for the composition you have on the Fighter class, in this case the Division property. The naming of that table column follows EF's rules.

For more on the EF FK Association read this article.

于 2012-07-30T16:36:55.863 に答える
2

これがどのように機能するかについての記事を書きまし

要するに、これは FK に名前が付けられるという規則によるものです。

<LocalPropertyName>_<ForeignIdPropertyName>

Entity Framework ナビゲーション プロパティの生成規則も参照してください。

EF 名を FK DivisionID にするために、モデルビルダーに以下を追加します

        modelBuilder.Entity<Fighter>()
            .HasRequired(f => f.Division)
            .WithMany(d => d.Fighters)
            .HasForeignKey(f => f.DivisionID);
于 2012-07-30T00:11:49.630 に答える