我在添加/更新父级时看到了一些关于为孩子添加值的问题和答案,但我的问题恰恰相反。 我有一个具有父子关系的模型组件:
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 :(得分: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();
由于父子关系,您应该会看到nota
也添加到Evaluation
表。