我知道我已经看过这个,但我无法在任何地方找到它。
我有几个具有多对多关系的对象:人和部门。一个人可以有很多部门,反之亦然。
我以为是:
var person = //query user
var d = new Department();
d.Id = 123;
person.Departments.add(d);
这会在数据库中创建一个新部门并链接它们,但这不是我想要的。该部门已经存在。我只是想创造这种关系。如何在不重新查询数据库以获取部门实例的情况下执行此操作?
答案 0 :(得分:1)
试试这个:
var department = dbContext.Departments.FirstOrDefault(d => d.Id == 123);
person.Departments.Add(department);
dbContext.SaveChanges();
在调用dbContext.SaveChanges()
之前,不应查询数据库,因为使用了延迟查询。但是,如果这不起作用,您可以尝试直接更新映射实体:
var departmentMember = new DepartmentMember
{
DepartmentId = 123,
MemberId = person.Id
};
dbContext.DepartmentMembers.Add(departmentMember);
dbContext.SaveChanges();
答案 1 :(得分:0)
怎么样:
person.Departments.Add(context.Departments.First(c=>c.Id==123));