.NET Core EF Core 2 Models in 1 View 创建操作
.NET Core EF Core 2 Models in 1 View Create Operation
您好,我已经阅读了很多书,但无法真正弄清楚这应该如何解决。
按照 this 教程,我不太明白如何在正确完成外键映射的情况下同时将数据输入到 2 个模型中。
据说我必须有 2 个模型(按照教程),例如 student 和 enrollment,我想同时向两个表输入数据,查看其他堆栈溢出帖子,我发现有两种方法通过创建 "big view" 或使用我在本例中所做的部分视图,将 2 个视图合并到模型中。因此,通过将 2 个对象返回到控制器并将其保存到数据库中,如下所示,它可以工作,除了 Enrollment 通过 studentID(外键)与 Student 没有任何 link。有办法设置或者绑定吗?
目前我可以将两个单独的数据集保存到数据库中。我似乎无法弄清楚如何设置外键。
我现在在 2 个 DB 中拥有的是
Student | Enrollment
ID LastName ID <Some Column> StudentID
1 XXX 1 XXX NULL (Need this to be 1)
如何让 StudentID 为 1?
public async Task<IActionResult> Create([Bind("ID,LastName")] Student student, [Bind("<Some data inside enrollment>")] Enrollment enrollment)
{
if (ModelState.IsValid)
{
_context.Add(student);
await _context.SaveChangesAsync();
_context.Add(enrollment);
await _context.SaveChangesAsync();
return View(student);
}
非常感谢!非常感谢您的帮助! :)
这会有所帮助,
var resultStudent = _context.Add(student);
enrollment.student_id = resultStudent.id;
_context.Add(enrollment);
await _context.SaveChangesAsync();
或
enrollment.Student = student;
_context.Enrollments.Add(enrollment);
await _context.SaveChangesAsync();
修改了 Simonare 的回答,这对我有用。似乎不需要 var resultStudent,但在控制器内部设置 ID 的一般想法就在那里。
_context.Add(student);
enrollment.studentID = student.ID;
_context.Add(enrollment);
await _context.SaveChangesAsync();
您好,我已经阅读了很多书,但无法真正弄清楚这应该如何解决。 按照 this 教程,我不太明白如何在正确完成外键映射的情况下同时将数据输入到 2 个模型中。
据说我必须有 2 个模型(按照教程),例如 student 和 enrollment,我想同时向两个表输入数据,查看其他堆栈溢出帖子,我发现有两种方法通过创建 "big view" 或使用我在本例中所做的部分视图,将 2 个视图合并到模型中。因此,通过将 2 个对象返回到控制器并将其保存到数据库中,如下所示,它可以工作,除了 Enrollment 通过 studentID(外键)与 Student 没有任何 link。有办法设置或者绑定吗?
目前我可以将两个单独的数据集保存到数据库中。我似乎无法弄清楚如何设置外键。
我现在在 2 个 DB 中拥有的是
Student | Enrollment
ID LastName ID <Some Column> StudentID
1 XXX 1 XXX NULL (Need this to be 1)
如何让 StudentID 为 1?
public async Task<IActionResult> Create([Bind("ID,LastName")] Student student, [Bind("<Some data inside enrollment>")] Enrollment enrollment)
{
if (ModelState.IsValid)
{
_context.Add(student);
await _context.SaveChangesAsync();
_context.Add(enrollment);
await _context.SaveChangesAsync();
return View(student);
}
非常感谢!非常感谢您的帮助! :)
这会有所帮助,
var resultStudent = _context.Add(student);
enrollment.student_id = resultStudent.id;
_context.Add(enrollment);
await _context.SaveChangesAsync();
或
enrollment.Student = student;
_context.Enrollments.Add(enrollment);
await _context.SaveChangesAsync();
修改了 Simonare 的回答,这对我有用。似乎不需要 var resultStudent,但在控制器内部设置 ID 的一般想法就在那里。
_context.Add(student);
enrollment.studentID = student.ID;
_context.Add(enrollment);
await _context.SaveChangesAsync();