簡體   English   中英

是否可以使用 Linq 到 SQL 運行任意查詢? (C#)

[英]Is it possible to run arbitrary queries with Linq to SQL? (C#)

如何使用 Linq 到 SQL 編寫以下查詢?

UPDATE [TB_EXAMPLE] SET [COLUMN1] = 1

(我的實際目標比這更復雜)

DataContext class 有兩個查詢方法,ExecuteCommand 和 ExecuteQuery。

ExecuteQuery 方法返回 LINQ 到 SQL 實體,所以你需要傳遞一個類型給它:

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

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

但是,ExecuteCommand 不需要類型,您可以將此方法用於您的 UPDATE 查詢 因為您只需要一個 String 來編寫查詢,您可以使用反射為您的 DAL 創建一個真正通用的 UPDATE 方法。

MyDataContext.ExecuteCommand("UPDATE Products WHERE ProductID = {0}",1) 

或者

MyDataContext.ExecuteCommand("UPDATE Products WHERE ProductID = 1") 

是的。 DataContext有一個ExecuteCommand方法,允許您執行任意(希望是參數化的)SQL。

引用上面 DataContext 鏈接上的評論:

對於 LINQ 到 SQL 未充分提供特定場景的情況,此方法是一種傳遞機制。

該命令的語法與用於創建 ADO.NET DataCommand 的語法幾乎相同。 唯一的區別在於如何指定參數。 具體來說,您可以通過將參數括在大括號 ({…}) 中來指定參數並從 0 開始枚舉它們。參數與參數數組中相同編號的 object 相關聯。

foreach(var TB_EXAMPLE ex dbDataContext.TB_EXAMPLES)
{
   ex.COLUMN1 = 1;
}

dbDataContext.SubmitChanges();

假設一個 DataContext 連接,您可以使用 DataContext object 的 ExecuteCommand 方法來執行不返回對象的 SQL 命令。

http://msdn.microsoft.com/en-us/library/bb386906.aspx

var row = (from t in dataContext.table
            where t.id==1
            select t).Single();
row.columnName = 1;
dataContext.SubmitChanges();

edt,哎呀慢了;)

您可以直接更新 object 然后調用保存更改。

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

如果您正在尋找執行此操作的實際 SQL 命令,那么 Scott Guthrie 有一篇很棒的帖子,演示了在http://weblogs.asp.net/scottgu/archive/2007/08/27上使用 ExecuteQuery 和 ExecuteCommand 方法-to-sql-part-8-executing-custom-sql-expressions.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM