2011-11-09 75 views
1

我知道我已經看到了這個,但是我無法在任何地方找到它。在不重新查詢數據庫的情況下添加關係

我有一對多對多關係:Person和Department。一個人可以有很多部門,反之亦然。

我以爲是:

var person = //query user 

var d = new Department(); 
d.Id = 123; 

person.Departments.add(d); 

這在數據庫中創建一個新的部門和他們聯繫但心不是我想要的。該部門已經存在。我只是想創造關係。我怎樣才能做到這一點,而無需重新查詢數據庫以獲取部門的實例?

+0

我想你要選擇,而不是d,當實例它 –

回答

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

如何:

person.Departments.Add(context.Departments.First(c=>c.Id==123)); 
+0

慣於'context.Departments.First(C =>的C。 Id == 123)'查詢數據庫? – Jeff

+0

哦對不起,我現在看到你的問題 –

+0

也許你將不得不用原始的sql插入來更新基礎表?我不知道另一種方式 - 但也許別人無論如何感謝:) –

相關問題