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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
LINQORM詳細(xì)比較

LINQ有很多值得學(xué)習(xí)的地方,這里我們主要介紹LINQ ORM之間的關(guān)系,包括介紹LINQ to SQL是.NET 3.5內(nèi)置的一個(gè)輕量級(jí)O/R Mapping解決方案等方面。

創(chuàng)新互聯(lián)長(zhǎng)期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為濟(jì)陽(yáng)企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè),濟(jì)陽(yáng)網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

1.LINQ不是ORM,確切地來(lái)說(shuō),他們之間的關(guān)系是:

LINQ的一個(gè)子集是屬于ORM的

2.他們之間的唯一的相同點(diǎn)是:

LINQ ORM都是一種技術(shù)概念,而不是一種實(shí)現(xiàn),最大的區(qū)別就在于——他們根本就不是一路東西!

LINQ是一種語(yǔ)言特性,在語(yǔ)言(Language)中集成(Integrate)查詢(Query)句法,所以才叫LINQ——Language-Integrated Query,目的是以一種看起來(lái)像SQL的方式來(lái)完成原本你需要去foreach的工作——最顯著的就是集合操作,比如搜索啊,排序啊,批量更新啊。因?yàn)?SQL是為關(guān)系數(shù)據(jù)庫(kù)而存在的,關(guān)系數(shù)據(jù)理論是建立在集合論的基礎(chǔ)上的,所以集合操作當(dāng)然是最本職的工作啦!

ORM是Object/Relation Mapping。Object是哪路?是Object Oriented Programming那路Object,Relation是哪路?是關(guān)系數(shù)據(jù)理論那路Relation,ORM的作用是在對(duì)象和關(guān)系之間建立映射,讓開發(fā)者可以以面向?qū)ο蟮姆绞饺ネ瓿梢恍╆P(guān)系數(shù)據(jù)操作——這些原本需要用關(guān)系代數(shù)、關(guān)系操作語(yǔ)言,這些通??雌饋?lái)有點(diǎn)生硬,還得花心思去專門學(xué)的東西來(lái)解決的操作。

LINQ ORM就不是一路上的東西,但是為什么很多人會(huì)把他們扯在一起呢?

3.有兩個(gè)最主要的原因

第一:LINQ長(zhǎng)得太像SQL了!SQL是關(guān)系數(shù)據(jù)訪問(wèn)領(lǐng)域目前階段當(dāng)之無(wú)愧的帶頭大哥,ORM是一個(gè)挺時(shí)髦的關(guān)系數(shù)據(jù)訪問(wèn)面向?qū)ο蠡鉀Q方案,也和SQL離不開關(guān)系,兩者就靠SQL搭上邊了。

第二:LINQ to SQL的存在。LINQ to SQL是一個(gè)ORM框架,它利用了LINQ的便捷性和LINQ長(zhǎng)得像SQL這個(gè)特點(diǎn),實(shí)現(xiàn)了一個(gè)用LINQ來(lái)完成關(guān)系型數(shù)據(jù)庫(kù)(這里是SQL SERVER)數(shù)據(jù)訪問(wèn)的便捷通道。

4.LINQ / LINQ to SQL / LINQ to XXX

LINQ是新生事物,不過(guò)從不少文章和討論上看來(lái),這方面的概念也已經(jīng)有點(diǎn)混沌不清了。因此我們經(jīng)??梢钥吹竭@樣的話:

◆LINQ只能將數(shù)據(jù)表與實(shí)體屬性一一對(duì)應(yīng)……
◆LINQ開發(fā)指南:在LINQ中進(jìn)行數(shù)據(jù)庫(kù)字段映射……

以上兩句話其實(shí)說(shuō)的都是LINQ to SQL而不是指LINQ??赡苡捎贚INQ to SQL的上鏡率最廣(連MSDN上About LINQ的第一個(gè)示例就是查詢數(shù)據(jù)庫(kù)的),因此許多人都將LINQ to SQL與LINQ混用,這會(huì)給初學(xué)者造成誤解,認(rèn)為L(zhǎng)INQ就是LINQ to SQL,LINQ to SQL就是LINQ——事實(shí)當(dāng)然不是這樣的。

LINQ是Language-Integrated Query的縮寫,是C# 3.0和VB 9.0中新加入的語(yǔ)言特性,可以在編程時(shí)使用內(nèi)置的查詢語(yǔ)言進(jìn)行基于集合的操作。這么做可以大大簡(jiǎn)化開發(fā)過(guò)程,提高開發(fā)效率。例如:

 
 
 
  1. List userList = GetUserList();  
  2. var userWithOddId = from u in userList  where u.UserID % 2 == 1  select u;   
  3. foreach (User u in userWithOddId)  {  
  4. Console.WriteLine(u.UserName);  
  5. }   

如果沒(méi)有LINQ,要篩選出ID為奇數(shù)的User對(duì)象則需要?jiǎng)?chuàng)建一個(gè)List,然后遍歷整個(gè)列表,將符合特定條件的User對(duì)象放入新列表。而有了 LINQ,這部分的篩選就變得非常容易,甚至只需要一句話就能完成。如果覺(jué)得這個(gè)例子不夠說(shuō)明LINQ對(duì)生產(chǎn)力有重大貢獻(xiàn)的話,請(qǐng)關(guān)注我接下來(lái)的一篇文章(暫定名為《我們?yōu)槭裁匆獡肀INQ》)。LINQ特指形如上面這段代碼中from...where...select這樣的用法,其返回值是 IQueryable。

LINQ to SQL是.NET 3.5內(nèi)置的一個(gè)輕量級(jí)O/R Mapping解決方案,可以將數(shù)據(jù)表映射為實(shí)體對(duì)象,方便開發(fā)人員對(duì)數(shù)據(jù)庫(kù)的操作。可見,LINQ to SQL實(shí)只是LINQ的一個(gè)實(shí)現(xiàn),提供了一個(gè)可以查詢SQL Server數(shù)據(jù)庫(kù)的LINQ Provider。

LINQ Provider是LINQ 查詢的執(zhí)行器,標(biāo)準(zhǔn)LINQ語(yǔ)法支持許多的操作符,但是某個(gè)具體的LINQ實(shí)現(xiàn)可能只支持其中的一部分。在.NET 3.5默認(rèn)提供了三種LINQ Provider,分別是LINQ to Object(即上面的例子),LINQ to SQL以及LINQ to XML。

LINQ to XXX表示使用LINQ針對(duì)XXX這種數(shù)據(jù)進(jìn)行查詢的解決方案。我們可以自定義LINQ Provider,使用我們自定義的查詢規(guī)則來(lái)處理特定數(shù)據(jù)集。目前互聯(lián)網(wǎng)上已經(jīng)可以找到數(shù)十種LINQ Provider(如LINQ to Flickr,LINQ to NHibernate等),而已經(jīng)處于beta 3階段的ADO.NET Entity Framework,最終也會(huì)提供一個(gè)LINQ Provider,叫做“LINQ to Entities”。以上介紹LINQ ORM。


新聞名稱:LINQORM詳細(xì)比較
鏈接地址:http://www.dlmjj.cn/article/dhiceph.html