沒有必要使用.Include()
加載關係來添加記錄。如果您要添加只是多了一個關係,甚至一對夫婦,你可以做到以下幾點:
假設你有沒有其他列的鏈接表:
Type1 aType1 = dbContext.Type1s.Find(<some type1 id>);
Type2 aType2 = dbContext.Type2s.Find(<some type2 id>);
aType1.Type2Collection.Add(aType2);
dbContext.SaveChanges();
也就是說,如果你的鏈接表中有其他列,那麼你可以這樣做:
Type1 aType1 = dbContext.Type1s.Find(<some type1 id>);
Type2 aType2 = dbContext.Type2s.Find(<some type2 id>);
TypeRelationships rel = new TypeRelationship()
{
Type1Id = aType1.Id,
Type2Id = aType2.Id,
// Other column values here
};
dbContext.TypeRelationships.Add(rel);
dbContext.SaveChanges();
或者,你可以簡單地從你的DbContext執行原始SQL語句,像這樣:
dbContext.Database.ExecuteSqlCommand(@"INSERT INTO [dbo].[TypeRelationships] (Type1Id, Type2Id) VALUES (type1Id, type2Id)");
注意:確保在執行此操作時使用參數值,我只是顯示要執行的方法。
最後,EF將爲每個INSERT語句執行單個查詢。如果您有1000個要插入,請考慮使用表值參數和原始ADO執行存儲過程。
對於大量的數據,您應該直接訪問交匯表,也許就像[this](http://codereview.stackexchange.com/a/45441/7251)。 –
創建一個存儲過程直接進行更新並將其添加到上下文存儲模型,否則您將不得不加載整組記錄以進行更新。 – Andrew