【问题标题】:Seed Many-to-Many Data in Entity Framework在实体框架中播种多对多数据
【发布时间】:2012-04-30 09:12:42
【问题描述】:

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

【问题讨论】:

    标签: ef-code-first


    【解决方案1】:

    我相信这篇博文向我展示了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 表也会被正确填充。

    谢谢戈兰·奥布拉多维奇

    【讨论】:

    • +1。如果您收到“无法创建类型的常量值...”错误,请确保在内存中创建这两个对象,然后将 Books 对象添加到上下文中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2014-04-30
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多