实体框架,外键种子

时间:2016-03-21 06:19:09

标签: c# sql-server entity-framework

我的问题是,您是否可以使用实体框架轻松播种第三层数据。我知道两层外键工作,因为我一直使用它们,虽然会有三个?

我的数据结构如下。

顶级表

表一 - 公司(一到多个地区)   - " list" 区域

表二 - 区域(一对多项目)   - " list" Items

表三 - 项目(多对一)   - ItemID 目前,两个级别(公司和区域之间)的语法工作正常:

var NewCompany = new Company() {

      Areas = new List<Area>(){

        Areaid = 0

   }
}
            _context.Company.Add(NewCompany);
            _context.Areas.AddRange(NewCompany.Areas);

问题是如何实现以下目标,将第三个表作为列表添加到区域。

    var NewCompany = new Company() {

      Areas = new List<Area>(){

        Items = new List<Items>(){
         itemId= 1
       }

   }
}
            _context.Company.Add(NewCompany);
            _context.Areas.AddRange(NewCompany.Areas);
            _context.Areas.AddRange(NewCompany.Areas.Items);

1 个答案:

答案 0 :(得分:0)

理想情况下,如果您在数据库中很好地指定了约束并正确配置了模型,那么您就不需要将相关实体(Area&amp; Items)添加到relavant实体集合中。

var NewCompany = new Company() {
      Areas = new List<Area>(){
        Areaid = 0
        Items = new List<Item>(){
           new Item(1),
           new Item(2)
           ...
           ...
        }
   }
}

//just add newCompany instance to the entity collection rest should be automatically taken care.
_context.Company.Add(NewCompany);
//no need to write below statement.
//_context.Areas.AddRange(NewCompany.Areas);