我有一个模型教室,其中包含一系列注册,其中包含一系列组件和组件,其中包含一系列子组件。 (我知道这可能令人困惑,也许不是最好的方式)
public class Classroom
{
...
public virtual List<Enrollment> Enrollments { get; set; }
}
public class Enrollment
{
...
public virtual int ClassroomId { get; set; }
public virtual Classroom Classroom { get; set; }
public virtual List<Components> Components { get; set; }
}
public class Component
{
...
public virtual int EnrollmentId { get; set; }
public virtual Enrollment Enrollment{ get; set; }
public virtual List<Subcomponent> Subcomponents { get; set; }
}
public class Subcomponent
{
...
public virtual int ComponentId { get; set; }
public virtual Component Component{ get; set; }
}
在视图的注册中,我有一个表格来显示组件以及将来的子组件。创建子组件后,我需要使用相应的注册ID重定向到该注册视图。我有这段代码:
public ActionResult CreateSubcomponent(Subcomponent subcomponent)
{
if (ModelState.IsValid)
{
db.Subcomponents.Add(subcomponent);
db.SaveChanges();
return RedirectToAction("View", "Enrollment", new { id = ??? });
}
...
}
我的问题是我该怎么做?我怎样才能从注册中获得身份证?我需要更改代码,如果是,如何更改? 感谢
答案 0 :(得分:0)
要保存SubComponent,您需要保存ComponentId,因为它是外键。这意味着你应该在action方法中拥有ComponentId。您应该查询数据库以获取该ComponentId的Component记录,并使用该实体的Enrollement属性。
public ActionResult CreateSubcomponent(Subcomponent subcomponent)
{
if (ModelState.IsValid)
{
db.Subcomponents.Add(subcomponent);
db.SaveChanges();
var c=db.Components.FirstOrDefault(s=>s.Id=subComponent.ComponentId);
var enrollmentId = c.EnrollementId;
return RedirectToAction("View", "Enrollment", new { id = enrollmentId });
}
// to do : return something
}