我认为这是你的追求,但不确定。为了处理子/孙实体的持久性,您可以通过多种方式执行此操作。您可以分别对每个实体执行 crud 操作。因此,这将涉及例如通过引用课程(可能是 courseId)来保存模块本身。
或者您可以只保存聚合根,在这种情况下,它看起来像您的课程实体。这将涉及加载课程、填充课程中的模块以及为每个模块填充章节。然后当你 `db.Courses.Add(newCourse); db.SaveChanges(); 所有实体都将被持久化。您必须确保您的外键和模型引用设置正确。
例如,要保存子实体:
public ActionResult DoSomething(int courseId, Module newModule)
{
var course = someService.LoadCourse(courseId);
course.Modules.Add(newModule);
using (var db = new MyDbContext())
{
db.Courses.Add(course);
db.SaveChanges();
}
return RedirectToAction("Success");
}
或者您可以单独保存:
public ActionResult DoSomething(Module newModule)
{
using (var db = new MyDbContext())
{
//You will need to make sure newModule.CourseId is set correctly
db.Modules.Add(newModule);
db.SaveChanges();
}
return RedirectToAction("Success");
}
根据您的观点,您将能够判断哪种方式最好。关于异步保存,您将能够使用 jquery 将模型发布为 json 来调用这些端点。附带说明一下,要查看的一件事是为 json 请求创建一个自定义的 Anti Forgery Token 验证器,例如.