これがあなたの後だと思いますが、よくわかりません。子/孫エンティティの永続性を処理するには、いくつかの方法でこれを行うことができます。各エンティティに対して crud 操作を個別に実行できます。そのため、たとえば、コースへの参照、おそらく courseId を使用してモジュールを単独で保存する必要があります。
または、集計ルートのみを保存することもできます。この場合、これは Course エンティティのように見えます。これには、コースの読み込み、コース上のモジュールの入力、および各モジュールの章の入力が含まれます。次に、`db.Courses.Add(newCourse); デシベル。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");
}
あなたの見解に応じて、どの方法が最善かを判断することができます。非同期保存に関しては、モデルをjsonとして投稿するjqueryでこれらのエンドポイントを呼び出すことができます。余談ですが、json リクエスト用のカスタム Anti Forgery Token バリデーターを作成することを検討してください。