是否可以使用Linq to SQL运行任意查询?(C#)

是否可以使用Linq to SQL运行任意查询?(C#),c#,.net,linq-to-sql,C#,.net,Linq To Sql,如何使用LINQtoSQL编写以下查询 UPDATE [TB_EXAMPLE] SET [COLUMN1] = 1 (我的实际目标比这更复杂)您可以直接更新对象,然后调用保存更改 using (var ctx = new MyDataContext()) { var customer = ctx.Customers.First(); customer.Name = "New Name"; ctx.SaveChanges(); } 如果您希望执行的是实际的SQL命令,那么Scott

如何使用LINQtoSQL编写以下查询

UPDATE [TB_EXAMPLE] SET [COLUMN1] = 1

(我的实际目标比这更复杂)

您可以直接更新对象,然后调用保存更改

using (var ctx = new MyDataContext())
{
  var customer = ctx.Customers.First();
  customer.Name = "New Name";
  ctx.SaveChanges();
}

如果您希望执行的是实际的SQL命令,那么Scott Guthrie有一篇很好的文章,演示了在

中使用ExecuteQuery和ExecuteCommand方法。假设使用DataContext连接,您可以使用DataContext对象的ExecuteCommand方法来执行不返回对象的SQL命令

是的。有一个方法可以让您执行任意(希望是参数化的)SQL

引用上面DataContext链接上的备注:

这种方法是一种间接的方法 LINQ转换为SQL的情况的机制 不足以提供 特定场景

该命令的语法几乎相同 与用于创建的语法相同 ADO.NET DATA命令。唯一的 不同之处在于参数的使用方式不同 是指定的。具体来说,你 通过封闭参数来指定参数 在大括号({…})中,并枚举它们 从0开始。参数为 与等号的相联系的 参数数组中的对象


edt,oops变慢;)

DataContext类有两个查询方法:ExecuteCommand和ExecuteQuery

ExecuteQuery方法将LINQ返回给SQL实体,因此需要向其传递一个类型:

[VB.Net]
MyDataContext.ExecuteQuery(Of Product)("SELECT * FROM PRODUCTS")

[C#]
MyDataContext.ExecuteQuery<Product>("SELECT * FROM PRODUCTS");


这种方法虽然有效,但速度慢得令人痛苦。每个“更新…”都将转换为自己的语句,并以批处理的方式发送到服务器。调用ExecuteCommand()将在服务器上更快地执行。
var row = (from t in dataContext.table
            where t.id==1
            select t).Single();
row.columnName = 1;
dataContext.SubmitChanges();
[VB.Net]
MyDataContext.ExecuteQuery(Of Product)("SELECT * FROM PRODUCTS")

[C#]
MyDataContext.ExecuteQuery<Product>("SELECT * FROM PRODUCTS");
MyDataContext.ExecuteCommand("UPDATE Products WHERE ProductID = {0}",1) 
MyDataContext.ExecuteCommand("UPDATE Products WHERE ProductID = 1")