这是我的模特
public class Movie
{
public int MovieID { get; set; }
public int GenreID { get; set; }
[Required, StringLength(200)]
public string Title { get; set; }
public int MovieLength { get; set; }
[Required, StringLength(1000)]
public string MovieSummary { get; set; }
public virtual Genre Genre { get; set; }
}
public class Genre
{
public int GenreID { get; set; }
public string GenreName { get; set; }
public virtual IEnumerable<Movie> Movies { get; set; }
}
public class ZimelleShopDbContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
public DbSet<Genre> Genres { get; set; }
}
ScottGu写了一篇Tutorial来展示如何为一个表种子。我想知道如何在一对多关系中的那两个表的情况下播种上面的例子。
感谢您的帮助
修改
我反过来做了,它起作用了。我唯一需要注意的是实例化ICollection。
public class Genre
{
public Genre()
{
Movies = new List<Movie>();
}
//...
}
然后我做了这个
protected override void Seed(ZimelleShopDbContext context)
{
var genre = new Genre { GenreName = "Foo" };
var movie = new Movie { Title = "Bar", MovieSummary = "Baz" };
genre.Movies.Add(movie);
context.Genres.Add(genre);
context.SaveChanges();
}
它仍然有效。
答案 0 :(得分:1)
您需要将IEnumerable<Movie> Movies
替换为ICollection<Movie> Movies
,因为IEnumerable
不是收集界面。
public class Genre
{
public int GenreID { get; set; }
public string GenreName { get; set; }
public virtual ICollection<Movie> Movies { get; set; }
}
在初始化程序中
protected override void Seed(ZimelleShopDbContext context)
{
var genre = new Genre { GenreName = "Foo" };
var movie = new Movies { Title = "Bar", MovieSummary = "Baz", Genre = genre };
context.Movies.Add(movie);
context.SaveChanges ();
}