0

私は EF5 Code First を試しており、モデルを使用しています (以下を参照)。

作成されたデータベースを見ると、Category テーブルを指す Track テーブルに何も表示されないため、混乱しています。カテゴリには Track を指す FK がありますが、これはカテゴリの重複が発生することを意味しますか?

ちょっとした背景: トラックを持ち、すべてのトラックに 1 ~ N のカテゴリを設定できるモデルを構築しようとしています。すべてのカテゴリは既に定義されています。つまり、それらは基本的にルックアップであり、データベースの作成時にシード メソッドで作成する予定です。

明らかなことを理解していないと思います... トラックを照会するとき、どのカテゴリが含まれているかをどのように知ることができますか?

どうも

public class Track : IAuditInfo
{
    public Int32 Id { get; set; }
    public String Name { get; set; }
    public String Description { get; set; }
    public String Data { get; set; }
    public DateTime CreatedOn { get; set; }
    public DateTime ModifiedOn { get; set; }

    public ICollection<Category> Categories { get; set; }

    public Track()
    {
        Categories = new List<Category>();
    }
}

public class Category
{
    public Int32 Id { get; set; }
    public Boolean IsVisible { get; set; }
    public String DisplayName { get; set; }
}
4

2 に答える 2

1

現在のモデルは、トラックとカテゴリ間の 1 対多の関係です。これは通常、エンティティ フレームワークが行うことに気付いたように、多側 (カテゴリ) の外部キーを片側 (トラック) に使用して実装されます。

私の理解が正しければ、あなたが求めているのは多対多の関係です。多くのトラックを同じカテゴリに関連付けることができ、1 つのトラックが複数のカテゴリに属する​​ことができます。

多対多の関係が必要であることをエンティティ フレームワークに理解させるには、カテゴリ クラスに ICollection プロパティを追加するだけです。したがって、両方のクラスに他のクラスのコレクションが必要です。つまり、トラックには多くのカテゴリがあり、カテゴリには多くのトラックがあります。

詳細については、http: //msdn.microsoft.com/en-us/data/hh134698.a.nospxも参照してください。

于 2013-10-10T05:44:54.347 に答える