16

私は EF 5.0 で最初のステップを踏んでいます。多対多の関係があります。ムービーは複数のタイプを持つことができ、タイプは複数のムービーを持つことができます

public class Movie
{
    public int MovieId { get; set; }
    [Required]
    public string Name { get; set; }

    public virtual ICollection<Type> Types { get; set; }
}


public class Type
{
    public int TypeId { get; set; }
    public string MovieType { get; set; }

    public virtual ICollection<Movie> Movies { get; set; }
}

データベースを生成すると、ムービーとタイプの間に多対多が作成されます

では、この多対多テーブルをシードするにはどうすればよいですか? ここに投稿された多くのソリューションを試しましたが、うまくいきませんでした。

また、これは最初にEFコードを使用して多対多の関係を生成する最良の方法ですか?

4

2 に答える 2

33

いくつかのムービーといくつかのタイプを作成し、これらのタイプの一部をMovie.Typesコレクションに追加して (またはその逆で) リレーションシップを作成します。次に例を示します。

protected override void Seed(MyContext context)
{
    var movie1 = new Movie { Name = "A", Types = new List<Type>() };
    var movie2 = new Movie { Name = "B", Types = new List<Type>() };
    var movie3 = new Movie { Name = "C", Types = new List<Type>() };

    var type1 = new Type { MovieType = "X" };
    var type2 = new Type { MovieType = "Y" };

    movie1.Types.Add(type1);

    movie2.Types.Add(type1);
    movie2.Types.Add(type2);

    movie3.Types.Add(type2);

    context.Movies.Add(movie1);
    context.Movies.Add(movie2);
    context.Movies.Add(movie3);
}
于 2013-01-06T14:51:30.130 に答える