2016-08-04 10 views
0

DesignAnalysisSoftwareルックアップ・テーブルにリンクするジャンクション・テーブルにリンクするDesignsテーブルがあります。その1対多対1の関係。私は離れてレコードを更新し、ルックアップテーブルに触れることなくジャンクションテーブルから任意のレコードを追加/削除を見つけることを試みている。 Iveはジャンクション・テーブルからレコードを削除する方法を見つけましたが、ジャンクション・テーブルに挿入するだけの親レコードを更新する方法を見つけることはできません。レコードを更新するときにジャンクション・テーブルにレコードを追加する

コードは以下のとおりです。

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

設計(入力paramは)作成しましたか?そのコードを追加してください –

答えて

0

design.DesignAnalysisSoftwares;た場合は、設定PK値はちょうど私がthis answerで説明したようにEntityState.Unchangeddesign.DesignAnalysisSoftwares;の状態を変更する必要がありました:

if (design.DesignAnalysisSoftwares != null) 
{ 
    foreach (var designSoft in design.DesignAnalysisSoftwares) 
     _context.Entry(designSoft).State = EntityState.Unchanged; 
} 
関連する問題