实体框架中的种子多对多数据

时间:2011-06-19 19:27:30

标签: ef-code-first

我首先使用代码,并且书籍标题和类别之间存在多对多的关系。在开发过程中播种数据的最佳方法是什么?如果我在同一类别中添加两本书,则种子逻辑会将类别两次添加到类别表中。我可以将类别分别添加到Category表中,但是如何在books集合中指定现有类别记录。

1 个答案:

答案 0 :(得分:9)

我相信这篇博文,并向我展示了http://blog.goranobradovic.com/2011/06/asp-net-mvc3-app-part-1-entity-framework-and-code-first/comment-page-1/#comment-1663

的方式

关键是与书籍创建分开建立类别对象,然后在创建ICollection时使用这些对象

var catCSharp = new Category {Name="CSharp"};
var catEF = new Category {Name="Entity Framework"};
var Categories = new List<Category> () {catCSharp, catEF};

var Books = new List<Book>();
Books.Add(new Book {Title="Entity Framework", 
                    Categories=new List<Category>() {catCSharp, catEF}};
Books.ForEach(b => context.Books.Add(b));

即使我只填充了context.Recipes DbSet,也填充了Categories表和CategoryRecipes表,两者都正确填充。

谢谢Goran Obradovic