Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET Core EF Core 1视图中的2个模型创建操作_C#_Asp.net Mvc_Asp.net Core_Asp.net Core Mvc_Ef Core 2.1 - Fatal编程技术网

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

C# .NET Core EF Core 1视图中的2个模型创建操作,c#,asp.net-mvc,asp.net-core,asp.net-core-mvc,ef-core-2.1,C#,Asp.net Mvc,Asp.net Core,Asp.net Core Mvc,Ef Core 2.1,嗨,我读了很多书,但我真的不明白这是怎么回事。 在接下来的教程中,我不太明白如何在外键映射正确的情况下将数据同时输入到两个模型中 假设我有两个模型(在教程之后),例如student和enrollment,我想同时向两个表输入数据,查看其他堆栈溢出帖子,我发现有两种方法可以将两个视图合并到模型中,要么创建“大视图”,要么使用我在本例中所做的局部视图。因此,通过向控制器返回2个对象并将其保存到DB(如下所示),它可以正常工作,只是注册没有通过studentID(外键)与Student建立任何链接。有

嗨,我读了很多书,但我真的不明白这是怎么回事。 在接下来的教程中,我不太明白如何在外键映射正确的情况下将数据同时输入到两个模型中

假设我有两个模型(在教程之后),例如student和enrollment,我想同时向两个表输入数据,查看其他堆栈溢出帖子,我发现有两种方法可以将两个视图合并到模型中,要么创建“大视图”,要么使用我在本例中所做的局部视图。因此,通过向控制器返回2个对象并将其保存到DB(如下所示),它可以正常工作,只是注册没有通过studentID(外键)与Student建立任何链接。有没有一种方法可以将其设置或绑定在一起

目前,我可以将两组单独的数据保存到数据库中。我似乎不知道如何设置外键

我现在在2DBS中看到的是

Student      | Enrollment
ID LastName    ID <Some Column> StudentID
1  XXX         1  XXX           NULL (Need this to be 1)
学生注册
ID LastName ID StudentID
1 XXX 1 XXX NULL(需要为1)
我如何让学生ID成为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);
        }
公共异步任务创建([Bind(“ID,LastName”)]Student-Student[Bind(“”)注册)
{
if(ModelState.IsValid)
{
_上下文。添加(学生);
wait_context.SaveChangesAsync();
_添加(注册);
wait_context.SaveChangesAsync();
返回视图(学生);
}
非常感谢!非常感谢您的帮助!:)

这会有所帮助

var resultStudent = _context.Add(student);
enrollment.student_id = resultStudent.id;
_context.Add(enrollment);
await _context.SaveChangesAsync();


修改了Simonare的答案,这对我来说很有效。似乎不需要var resultStudent,但在控制器内设置ID的一般思路就在这里

_context.Add(student);
enrollment.studentID = student.ID;
_context.Add(enrollment);
await _context.SaveChangesAsync();

对我来说似乎不起作用。对于第一个例子,我在registration.student\u id=resultStudent.id;中有一些错误,我认为它找不到resultStudent.id,而在第二个例子中,registration.student=student;registration.student=student.student给出了一些错误,但没有查看您的班级,很难理解您的代码有什么问题关于这一点。是固定的,我已经更新了你的答案。谢谢你指向正确的方向。我不知道我仍然可以把变量设置在控制器里面。非常感谢你的帮助。!)欢迎你。如果你觉得这个答案是有用的,请考虑把它标记为检查格力的答案。n勾选,以便社区能够从中受益。幸运的是成功了。请也看一下我的答案。非常感谢您的帮助!:)
_context.Add(student);
enrollment.studentID = student.ID;
_context.Add(enrollment);
await _context.SaveChangesAsync();