linq to sql
是linq技術在資料庫方面的應用。資料庫技術從oledb,odbc到ado,在到ado.net到現在的linq to sql,讓程式設計師運算元據庫越來越簡單。linq 的宗旨就是讓查詢無處不再,這當然要包括對資料庫的查詢。linq技術不僅僅可以對資料庫進行查詢,同樣cuid(create,update,insert,delete)都可以實現,而且非常方便。
要想查詢資料庫中表的資料,就要先建立對資料庫表的對映,就像要想使用ado.net就需要先把資料庫中的資料存到dataset中,看一下**: 1.
[table(
name
= "category"
)]
2.public class category 3.
以上就是對資料表的乙個對映。使用的資料庫是sql server2000中自帶的資料庫northwind。其實寫過c#的人也應該能看懂上面的**。建立好對錶的對映之後,就可以對其進行相應的操作了。
注意這裡我們使用手工寫資料表的對映,其實ms為我們提供了相應的自動化工具sqlmetal,大家可以使用這個工具自動產生對資料庫表對映的**,效率比較高,如果自己有什麼需要改動的地方還可以對產生的**進行更改。
下面可以查詢了
11.datacontext
db=
newdatacontext("
server
=localhost
;database
=northwind
;trust_connection
=true
");
12.//
這裡的連線字串根據自己的配置進行相應更改即可
13.table
categorys
= db
.gettable();
14.var
result
= 15.
from
c in categorys
16.select c;
17.//
大家看到了
datacontext
就相當於
ado.net
中的connection
,但是它提供了更強大功能
1.//
下面可以輸出
result
中的內容
2.foreach(var c in result)
3.console.writeline("
categoryid
=,name
=,descn
=",c.categoryid,c.name,c.descn);
以上就是對資料庫的查詢,我們可以寫出很複雜的查詢來,其實在內部,linq技術會把你寫的linq語句,轉換成sql語句送到資料庫中去執行。然後返回相應的結果。如果大家想看轉換後的sql語句,可以在建立完連線之後加上這樣一句:db.log=console.out。這樣程式將自動輸出sql語句和查詢結果.這裡只是簡單的介紹了一下如何查詢,我們知道表與表之間還有關係,這些複雜的東西我們以後在詳細說明。
下面再來看看如何更改
4.//
更改5.
string
id= 「dogs";
6.var
cat=
db.categories.single(
c=>c.
categoryid
== id);
7.cat.
name
= 「new dogs";
8.//
新增9.
product p=
newproduct ...;
10.cat.products.add(p);
11.//
刪除12.
string
id= 「dogs";
13.var
cat=
db.categories.single(
c=>c.
categoryid
== id);
14.db.categories.remove(cat)
15.//
提交更改
16.db.submitchanges();
//注意,
submichanges()
完成了物件層到資料層的更改。
//也就說不進行提交,更改的結果不會儲存到資料庫中。
LINQ的技術演進
以乙個簡單的例子來說明 var developersusingcsharp from d in developers where d.language c select d.name 1 提供對ienumerable的extension method使得它可以將where,select應用到任意實現...
LINQ技術簡介(整理)
linq技術 解決降低訪問和整合資訊資料的複雜度的問題,即集合訪問技術 linq,語言級整合查詢 languageintegratedquery c 3.0 linq 查詢語法 首先來看乙個很簡單的linq查詢例子,查詢乙個int 陣列中小於5的數字,並按照大小順序排列 class program ...
Linq使用Group By經驗總結
學習linq時,經常會遇到linq使用group by問題,這裡將介紹linq使用group by問題的解決方法。1.計數 var q from p in db.products group p by p.categoryid into g select new 語句描述 linq使用group b...