2009-11-19 20 views

回答

2

假如在Article和Category表中存在相應的行,這應該與標準插入沒有區別。另一方面,如果這些表爲空,那麼在執行SubmitChanges之前,需要將行插入這些表中。

Linq-to-Sql將管理你的優先權。總而言之,我建議你只需將行插入到Article_to_Categories表中,看看會發生什麼。


編輯:如果不知道如何在LINQ到SQL插入一行,考慮例子網站:

+0

怎麼樣,我是新來的linq。我一直在閱讀太多的nhibernate,我很困惑! – mrblah 2009-11-19 16:36:03

0

根據我的經驗,我有類似的問題插入像這樣的關聯表中的記錄。對我而言,適用於外鍵關係並添加對象而不僅僅是外鍵ID。

例如,這並沒有爲我工作:

var newRec = new Article_To_Categories 
{ 
    Article_ID = 1, 
    Category_ID = 2 
}; 

DataContext.Article_To_Categories.InsertOnSubmit(newRec); 
DataContext.SubmitChanges(); 

什麼工作對我來說是這樣的:

var newRec = new Article_To_Categories 
{ 
    Article = DataContext.Articles.Where(a => a.Article_ID == 1).SingleOrDefault(), 
    Category = DataContext.Articles.Where(a => a.Category_ID == 2).SingleOrDefault() 
}; 

DataContext.Article_To_Categories.InsertOnSubmit(newRec); 
DataContext.SubmitChanges(); 

儘可能靠近我可以計算根據我的研究,如果我添加該對象而不是ID,則生成的Article_To_Categories對象會正確更新相關記錄的內容。更新過程的一部分是不應重新插入相關記錄的通知。如果您只是使用ID更新新記錄,我不相信LINQ-to-SQL會自動從文章和類別表中檢索記錄,這意味着這些相關記錄將受到任何現有驗證的支配,無論是對象或數據庫。