日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
詳細(xì)介紹LinqtoSQL

在向大家詳細(xì)介紹Linq to SQL之前,首先讓大家了解下Linq to SQL的核心庫(kù),下文全面介紹Linq to SQL。

創(chuàng)新互聯(lián)是專(zhuān)業(yè)的彭澤網(wǎng)站建設(shè)公司,彭澤接單;提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行彭澤網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

Linq to SQL的核心庫(kù)是System.Data.Linq.dll(位于C:"Program Files"Reference Assemblies"Microsoft"Framework"v3.5目錄下),不過(guò),System.Core.dll里的System.Linq是整個(gè)Linq的核心。在System.Data.Linq.dll里System.Data.Linq命名空間下的DataContext類(lèi)是Linq to SQL的入口點(diǎn),可以說(shuō)Linq to SQL一切奇妙之處都來(lái)源如此。通過(guò)DataContxt我們可以獲取Table對(duì)象(這個(gè)類(lèi)和DataContext在同一命名空間下),你會(huì)發(fā)現(xiàn)Table竟然是繼承自IEnumerable,那上一篇介紹的那些查詢(xún)表達(dá)式都可以應(yīng)用在Table對(duì)象上了,呵呵。

有過(guò)使用ORM框架的讀者肯定知道,一般ORM框架都有個(gè)映射,就是將內(nèi)存中的對(duì)象和數(shù)據(jù)庫(kù)表做映射,大名鼎鼎的NHibernate是使用XML文件做映射的(我們一般將這種映射稱(chēng)之為無(wú)入侵的),還有ActiveRecord模式一般式在屬性上加Attribute做映射的(一般稱(chēng)之為侵入式的)。Linq to SQL也不例外,也需要一個(gè)映射,她使用的是侵入式的,所以就需要一些Attribute,這些Attribute放在System.Data.Linq.Mapping命名空間下。

作為微軟大張旗鼓推出的ORM,Linq to SQL目前卻支持Sql Server,這個(gè)未免有些遺憾(所幸的是對(duì)于其他幾種數(shù)據(jù)庫(kù)已經(jīng)有開(kāi)源實(shí)現(xiàn)了),不過(guò)放心,看看核心庫(kù)里面的命名空間你也許看到了曙光。在System.Data.Linq.dll還有兩個(gè)命名空間:

System.Data.Linq.Provider,這個(gè)命名空間是提供一些Provider模式的接口,由于不同數(shù)據(jù)庫(kù)所需要的SQL語(yǔ)句,一些函數(shù)都有一些不同,但是她們的操作卻都大同小異,所以我們可以抽象一個(gè)統(tǒng)一的接口,然后有各個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)(非常奇怪微軟為啥將IProvider接口設(shè)置為internal的,難道他只想他自己一個(gè)人干?)。System.Data.Linq.SqlClient命名空間里放的就是針對(duì)Sql Server的實(shí)現(xiàn)了,按照這個(gè)結(jié)構(gòu),支持所有的數(shù)據(jù)庫(kù)都是可以的。

好了,上面對(duì)Linq to SQL的一些組件做了一個(gè)大致的介紹,下面就稍微演示一段代碼。

要做一個(gè)Linq to SQL的case,首先你必須創(chuàng)建一個(gè)映射類(lèi),該類(lèi)映射到數(shù)據(jù)庫(kù)表。實(shí)際上映射類(lèi)和我們?cè)谏弦黄褂玫膶?shí)體類(lèi)非常相似(確保對(duì)System.Data.Linq.dll的引用,并且對(duì)System.Data.Linq.Mapping命名空間的聲明):

 
 
 
  1. [Table(Name="Users")]  
  2. public class User  
  3. {  
  4. [Column(IsPrimaryKey=true)]  
  5. public int UserId { get; set; }  
  6. [Column]  
  7. public string UserName { get; set; }  
  8. [Column]  
  9. public string Password { get; set; }  
  10. [Column]  
  11. public string BlogName { get; set; }  
  12. [Column]  
  13. public Role Role { get; set; }  

(看到這里你也許會(huì)命名什么叫入侵式了吧,入侵式就是為了達(dá)到目的,對(duì)代碼做了一些改變,比如這里的Table,Column)

User類(lèi)上面加的Table表示這個(gè)類(lèi)和一個(gè)表映射,表名為Users,注意,如果表名和類(lèi)名是一樣的,這個(gè)Name屬性是無(wú)需指定的,在屬性或共有字段上加Column表示這個(gè)屬性和數(shù)據(jù)庫(kù)表里的字段映射,如果屬性名和數(shù)據(jù)庫(kù)表字段名一直只需要加個(gè)Column就夠了,如果這個(gè)屬性在數(shù)據(jù)庫(kù)表里是個(gè)主鍵,那么將其IsPrimaryKey設(shè)置為true就可以了。

映射建好了,該是Linq上場(chǎng)的時(shí)候了(我們要從數(shù)據(jù)庫(kù)表里查詢(xún)出用戶(hù)名以”yu”開(kāi)頭的所有用戶(hù)):

 
 
 
  1. //我們給定一個(gè)數(shù)據(jù)庫(kù)連接字符串實(shí)例化一個(gè)DataContext對(duì)象  
  2. DataContext dbContext = new DataContext(connectionString);  
  3.  
  4. dbContext.Log = Console.Out;  
  5. //調(diào)用DataContext的GetTable方法,獲取一個(gè)Table對(duì)象  
  6. Table users = dbContext.GetTable();  
  7. //由于Table繼承自IEnumerable,所以,前面所介紹的那些查詢(xún)表達(dá)式在這里也使用了  
  8. var result = from user in users  
  9. where user.UserName.StartsWith("yu")  
  10. select user;  
  11.  
  12. //遍歷結(jié)果集  
  13. foreach (var u in result)  
  14. Console.WriteLine(u.UserName); 

很妙吧,沒(méi)有了以前重復(fù)又重復(fù)的DbCommand,DbConnection代碼,好像C#直接面向數(shù)據(jù)庫(kù)一樣。

在上面的代碼里還有一行特殊的代碼:dbContext.Log = Console.Out;,它會(huì)將你的C#查詢(xún)表達(dá)式最后產(chǎn)生的SQL語(yǔ)句輸出來(lái),這樣就更方便你調(diào)試和優(yōu)化了。

本篇只是對(duì)Linq to SQL做一個(gè)大致的介紹,使大家對(duì)Linq to SQL有個(gè)全面的感性認(rèn)識(shí),在下一節(jié)會(huì)用大量的實(shí)例介紹Linq to SQL的方方面面。

這一篇介紹Linq to SQL,如果你已經(jīng)對(duì)Linq to SQL有使用經(jīng)驗(yàn)或者你覺(jué)得我說(shuō)的有地方有錯(cuò)誤,有誤導(dǎo)大家的嫌疑,煩請(qǐng)不要吝嗇你的memory和CPU給我寫(xiě)個(gè)評(píng)語(yǔ),我將不勝感激。


當(dāng)前名稱(chēng):詳細(xì)介紹LinqtoSQL
網(wǎng)站URL:http://www.dlmjj.cn/article/copgpce.html