我已经定义了一个关系,它是一个可以包含许多课程的模块。实体框架4 - 将现有模型添加到关联
我有一个接口,它允许你添加课程到模块;我曾尝试下面的代码,但是这会导致一个新的模块中的模块表中创建,然后添加到课程
int moduleID = viewModel.moduleID;
course.Modules.Add(new Module { ID = moduleID })
SaveChanges();
应该是什么的正确方法?
编辑:使用断点调试显示整数模块ID是正确的。
我已经定义了一个关系,它是一个可以包含许多课程的模块。实体框架4 - 将现有模型添加到关联
我有一个接口,它允许你添加课程到模块;我曾尝试下面的代码,但是这会导致一个新的模块中的模块表中创建,然后添加到课程
int moduleID = viewModel.moduleID;
course.Modules.Add(new Module { ID = moduleID })
SaveChanges();
应该是什么的正确方法?
编辑:使用断点调试显示整数模块ID是正确的。
你可以试试这个:
var module = new Module { ID = viewModel.moduleID };
// Attach first so that context doesn't track module as a new one
context.Modules.Attach(module);
// Now make connection to attached module
course.Modules.Add(module);
context.SaveChanges();
正如你可以看到我并不需要从数据库中加载模块进行连接。这对于多对多关系非常有用,但在一对多关系的情况下可能会更复杂。
您正在创建一个新模块,这意味着您获得的行为是正常的。您需要做的是,从数据上下文中获取与moduleID
对应的Module
对象,然后将其添加到您的课程中。
int moduleID = viewModel.moduleID;
var module = context.Modules.FirstOrDefault(m => m.ID == moduleID);
course.Modules.Add(module)
SaveChanges();
希望这有助于:)