[英]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 命令。
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.