linq執行sql
⑴ 什麼是ling to sql
ling to sql 首先得先解釋 linq
LINQ = 語言集成查詢(Language INtegrated Query)
是一組用於c#和Visual Basic語言的擴展。它允許編寫C#或者Visual Basic代碼以查詢資料庫相同的方式操作內存數據。
舉個例子,比如你的C#代碼裡面,有個 Apple 對象,對象有 顏色這個屬性
當給你一個 Apple 類的列表,要你返回所有 顏色為紅色的。
如果沒有 LINQ 的話, 那麼就是 for 循環, 然後 if
使用 LINQ 的話, 就是有點像資料庫的 SQL 語句的寫法
var query =
from apple in appleList
where apple.Color == "紅色"
select apple;
關於 LINQ 的例子代碼:
http://hi..com/wangqing999/blog/item/40982215d2625371ca80c494.html
LINQ to SQL 呢?
就是首先是通過開發工具, 通過讀取資料庫中的表結構,來創建 C# / VB.NET 的代碼
比如你有個表 Test, 有2個欄位 id, value
那麼開發工具會產生一個類, 叫 Test. 這個類有2個屬性 id, value
然後你可以通過寫 LINQ 的方式, 來查詢資料庫裡面的數據。
var query =
from test in context.Test
select test;
關於 LINQ to SQL 的例子代碼:
http://hi..com/wangqing999/blog/item/143b63da8185904594ee37ee.html
⑵ 這兩段sql語句用linq語句怎麼寫
你的語句好像錯了,ON (OD.OrderID=OD.OrderID)這個應該是 ON (O.OrderID=OD.OrderID)
對於問題一,請參考這:
using (var db = new DataClasses1DataContext())
{
var list = from c in db.Customers
join o in db.Orders on c.CustomerID equals o.CustomerID
join od in db.Order_Details on o.OrderID equals od.OrderID
select new{c.Country,od};
var result = from d in list
group d by d.Country into g
orderby g.Sum(c => (c.od.UnitPrice * c.od.Quantity) * (1 - (decimal)c.od.Discount)) descending
select g.Key;
//result 即為最終想要的數據
}
對於問題二,請參考這:
using (var db = new DataClasses1DataContext())
{
foreach(var item in db.Order_Details.Where(c=>c.Procts.Categories.CategoryName=="Seafood"))
{
db.Order_Details.DeleteOnSubmit(item);
}
db.SubmitChanges();
}
⑶ LINQ TO SQL 有什麼優缺點啊
首先,在了解 LINQ To SQL 有什麼優點之前,我們有必要首先了解下,微軟為什麼弄了這么個東西。 搞出這個東西來有什麼目的:——當然是為了 滿足不知道怎麼操作數據的程序員開發設計的,並不是每個程序員 都會直接操作資料庫,LinQ 可以讓他們以一種面向數據對象的方式來思考,及持久化他們的數據!
好處: 容易學習,書寫簡單。 在開發 中小型 項目 的時候推薦使用!因為可以節省時間!
它可以很方便的調用 存儲過程、SQL函數
缺點:由於直接封裝了所有的數據持久操作。導致批量持久數據會產生效率問題
尤其體現在批量跟新數據,它會在內存中保持大量的數據模型。
總結:中小型 項目 就放心用吧! 不過從技術 儲備的角度來說,建議 看看entity framework
⑷ 哪位高手知道vs2010中的linq怎麼查看生成的sql語句
linq使用對象的方式來操作資料庫。最後根本的還是生成原始的sql。但是對象的方式掩蓋了很多原本的sql面貌可能會是我們不明白對應的sql是什麼。還好linq可以輸出sql語句
DataClassesDataContext dc = new DataClassesDataContext();
這個對象提供的日誌功能。就是輸出對應的sql語句。在控制台應用程序下。使用dc.console(有誤)可以直接輸出顯示對應的sql語句。
在windonw和web程序下面可以建立一個txt文件日誌。把生成的sql記錄下來。代碼比較簡單了
DataClassesDataContext dc = new DataClassesDataContext();
StreamWriter sw = new StreamWriter(Server.MapPath("sqlLog.txt"), true); // Append
dc.Log = sw;
//然後是linq的相關數據操作
sw.Flush();
sw.Close();
就這樣對應的sql語句就記錄到sqlLog.txt文件中了。
我們可能會發現生成的sql在我們意料之外。呵呵。我的感覺是這樣
⑸ LINQ to SQL模型 是什麼意思
通過使用 LINQ to SQL,您可以使用 LINQ 技術訪問 SQL 資料庫,就像您訪問內存中的集合一樣。
例如,在下面的代碼中,創建了 nw 對象來表示 Northwind 資料庫,將 Customers 表作為目標,篩選出了來自 London 的 Customers 行,並選擇了一個表示 CompanyName 的字元串以進行檢索。
執行循環時,將檢索到 CompanyName 值的集合。
//NorthwndinheritsfromSystem.Data.Linq.DataContext.
Northwndnw=newNorthwnd(@"northwnd.mdf");
//or,
//Northwndnw=newNorthwnd("Database=Northwind;Server=server_name;IntegratedSecurity=SSPI");
varcompanyNameQuery=
fromcustinnw.Customers
wherecust.City=="London"
selectcust.CompanyName;
foreach(varcustomerincompanyNameQuery)
{
Console.WriteLine(customer);
}
我覺得詳細的介紹,你還是直接看MSDN:
http://msdn.microsoft.com/zh-cn/library/bb386976.aspx