1视图创建操作中的.NET Core EF Core 2模型

时间:2018-12-27 16:58:45

标签: c# asp.net-mvc asp.net-core asp.net-core-mvc ef-core-2.1

您好,我读了很多书,但无法真正弄清楚这应该如何解决。 在完成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);
        }

非常感谢!非常感谢您的帮助! :)

2 个答案:

答案 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();