2011-11-10 75 views
0

這裏是我的模型EF Code First:如何在一對多關係中種子表?

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(); 
    } 

它仍然有效。

回答

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(); 
} 
+0

它完美地工作。我試圖按照流派而不是電影(參見上面的編輯)。謝謝。 – Richard77

相關問題