我应该如何在Entity Framework Code 5.0中将数据种子化为多对多关系

Amr*_*dan 15 entity-framework ef-code-first entity-framework-5

我在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; }
}
Run Code Online (Sandbox Code Playgroud)

当我生成数据库时,它会在Movie和type之间创建多对多

那么,我应该怎样做才能将这个多表种子播种?我在这里尝试了很多解决方案,但它没有用.

此外,这是使用EF代码首先生成多对多关系的最佳方法

Sla*_*uma 28

只需创建一些电影和几种类型,并通过向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);
}
Run Code Online (Sandbox Code Playgroud)