2016-08-04 94 views
0

我有一个设计表,它链接到链接到DesignAnalysisSoftware查找表的交接表。它是1对多关系。我试图找到更新记录,并添加/删除联结表中的任何记录,而无需触摸查找表。我找到了一种从联结表中删除记录的方法,但在更新刚刚插入联结表的父记录时找不到方法。在更新记录时在交接表中添加记录

我使用的代码如下。

public bool UpdateDesign(Design design){ 
      if (!Validate(design)){ 
       return false; 
      } 

      var DesignFromDb = _context.Designs.Single(d => d.StructureId == design.StructureId); 

      if (DesignFromDb != null){ 
       _context.Entry(DesignFromDb).CurrentValues.SetValues(design); 

       DesignFromDb.ModifiedDate = DateTime.Now; 
       DesignFromDb.ModifiedByFullName = base.GetUsersFullName(); 
       DesignFromDb.ModifiedBy = base.GetUserLogin(); 

       DesignFromDb.DesignAnalysisSoftwares.Clear(); 
       DesignFromDb.DesignAnalysisSoftwares = design.DesignAnalysisSoftwares; <- this adds to the junction table but also adds to the lookup table 

       } 
      } 
+0

?请添加该代码 –

回答

0

如果design.DesignAnalysisSoftwares;已设置PK值,那么只需要改变的design.DesignAnalysisSoftwares;状态EntityState.Unchanged,因为我在this answer描述:

设计(输入参数)创建如何
if (design.DesignAnalysisSoftwares != null) 
{ 
    foreach (var designSoft in design.DesignAnalysisSoftwares) 
     _context.Entry(designSoft).State = EntityState.Unchanged; 
}