2016-08-21 12 views
0

親を追加/更新するときに子供に値を追加することに関するいくつかの質問と回答がありましたが、私の質問は反対です。 私は親子関係を持つモデルのコンポーネントがあります。値がChild MVCに追加されたときにParentに値を追加

public class Component 
    { 
     public virtual int ComponentId { get; set; } 

     public virtual string Type { get; set; } 
     public virtual string Name { get; set; } 

     public virtual Course Course { get; set; } 

     public virtual int ParentId { get; set; } 
     public virtual Component Parent { get; set; } 
     public virtual List<Component> Childs { get; set; } 

     public virtual List<Evaluation> Evaluations { get; set; } 

} 

を、私は、各ユーザーにそれぞれの子にグレードを与える必要があります。

public class Evaluation 
    { 
     public virtual int EvaluationId { get; set; } 

     public virtual int ComponentId { get; set; } 
     public virtual Component Component { get; set; } 

     public virtual int UserCourseId { get; set; } 
     public virtual UserCourse User { get; set; } 

     public virtual int Grade { get; set; } 
    } 

そして、選択したコンポーネントを取得し、ユーザーを選択して、グレードを与えることができますビュー: 私はこのモデルを持っています。それは最後の子供に学年を与えることが許されています、そして、彼らの親のグレードは子供の同じグレードになります(アイデアは将来、より多くの子供を持つことになり、親のグレードはグレードの合計になります)。だから私は同じグレードが選択されたコンポーネントの親のIDでデータベースに新しい行を作成する必要があります。 私はこのコードを試してみましたが、それは動作しません:

[HttpPost] 
     [ValidateAntiForgeryToken] 
public ActionResult Create(Evaluation evaluation) 
{     

    if (ModelState.IsValid) 
    { 
     if (evaluation.Component.ParentId != 0) 
     { 
      var nota = new Evaluation 
      { 
       ComponentId = evaluation.Component.ParentId, 
       UserCourseId = evaluation.UserCourseId, 
       Grade = evaluation.Grade 
      }; 
      db.Evaluations.Add(nota); 
      db.SaveChanges(); 
     } 

     db.Evaluations.Add(evaluation); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    return View(evaluation); 
} 

(このコードは、おそらく完全に間違っていることに注意してください) 私はこれをどのように行うことができますか? ありがとう

答えて

0

notaの作成後にComponentを作成します。このような何か:

var nota = new Evaluation 
       { 
        ComponentId = evaluation.Component.ParentId, 
        UserCourseId = evaluation.UserCourseId, 
        Grade = evaluation.Grade 
       }; 

    var component= new Component(); 
    component.add(nota); 
    db.Components.Add(component); 
    db.SaveChanges(); 

あなたがあるため、親子関係のあなたのnotaEvaluationテーブルに追加されるはずです。

関連する問題