2012-01-27 129 views
2

您好,我正在開發一個wpf應用程序。我正在使用linq to sql來執行所有數據庫操作。Linq to sql更新記錄列表中的多條記錄

現在我想通過比較它們的主鍵從記錄列表中同時更新多個記錄。 即在SQL Server 2005

我們通過一個XML到程序,我們打開它,並更新記錄,如

SELECT * INTO #TMP FROM openxml(Myxml); 

UPDATE myPhysicalTable SET 
    myColumnName = #TMP.myColumnName 
    , myColumnName1 = #TMP.myColumnName1 
    FROM #TMP 
    WHERE myPhysicalTable.pkid = #TMP.pkid 

現在我想在這裏做同樣的LINQ to SQL的話,請提出適當的方式。

回答

0

Linq to sql不支持開箱即用的基於集合的操作。所以,你需要像這樣

  • 變種X =選擇
  • 的foreach +更新
  • 的SubmitChanges

更新 至於你的評論,是的:它會比低效率SQL中的UPDATE。 Linq to Sql會爲每個更新發送一個更新語句。即使您僅在調用SubmitChanges()時纔會獲得單獨的更新(但在一次事務中)。

因此,您可能需要重新考慮使用Linq2sql進行此特定操作,尤其是在您有大集合的情況下。

+1

爲每個循環的每個更新進行數據庫調用然後不會產生問題? – 2012-01-27 13:16:40

+0

請參閱問題中的更新 – Pleun 2012-01-27 13:44:16