.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();