2012-01-27 149 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