如何将更新/加入SQL转换为Linq To SQL?

时间:2009-12-27 17:41:26

标签: linq-to-sql

我想将这个t-sql转换为linq到sql。

UPDATE Table1
SET CustomerName = 'john Doe'
FROM Table1 
JOIN Table2 
ON Table1.TableID = Table2.TableID
WHERE CustomerID = 4

4 个答案:

答案 0 :(得分:2)

使用LINQ-to-SQL这是一种简单的方法:

var query = from x in db.Table1
            join y in db.Table2 on x.TableID equals y.TableID
            where x.CustomerID == 4
            select x;

foreach(var result in query) {
    result.CustomerName = "John Doe";
}

db.SubmitChanges();

如果您确定结果集对我来说很小但是它在大型结果集上表现糟糕,那么这种方法很好。有batch updates使用LINQ-to-SQL的方法,或者你只能使用DataContext.ExecuteCommand

答案 1 :(得分:1)

ExecuteCommand适用于少数(希望)LINQ to SQL不够强大的场合。

答案 2 :(得分:0)

不幸的是,Linq to SQL没有“更新”语句。扩展方法,IQueryable,表达式树和DbCommand可能(但有点复杂)。一种方法是here - 最后可以下载一些源代码。

请记住,对于更复杂的查询,这可能是错误的。当我使用Linq to SQL时,我通常会通过存储过程完成所有批量更新/删除。

或者,如果您只是想让更新代码更容易编写而不关心性能(即因为您知道要更新的行数非常少),就会实现{{你可以使用的3}}(扩展方法)。

答案 3 :(得分:0)

如果我正确理解您的SQL查询,您希望使用CustomerId = 4更新客户的名称。

由于您无法直接发出此SQL(正如其他人已经指出的那样),您需要从db(使用DataContext)获取id为4的客户,更改其名称并提交更改使用DataContext.SubmitChanges().

访问数据库