您好,我读了很多书,但无法真正弄清楚这应该如何解决。 在完成this教程之后,我不太清楚如何正确完成外键映射后如何将数据立即输入2个模型。
假设我有2个模型(按照本教程进行操作),例如学生和注册,并且我想同时在两个表中输入数据,查看其他堆栈溢出帖子,发现有2种合并方法通过创建“大视图”或使用本例中完成的局部视图,将2个视图引入模型。因此,通过将2个对象返回到控制器并将其保存到数据库中(如下所示),它可以工作,除了“注册”没有通过StudentID(外键)与Student的任何链接。有没有办法将其设置或绑定在一起?
当前,我可以将两个单独的数据集都保存到数据库中。我只是似乎不知道如何设置外键。
我现在在2个数据库中拥有的是
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);
}
非常感谢!非常感谢您的帮助! :)
答案 0 :(得分:2)
这会有所帮助,
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();
答案 1 :(得分:0)
修改后的Simonare回答了一下,这对我有用。似乎不需要var resultStudent,但是可以在控制器内部设置ID的一般想法。
_context.Add(student);
enrollment.studentID = student.ID;
_context.Add(enrollment);
await _context.SaveChangesAsync();