日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何更簡(jiǎn)單實(shí)現(xiàn)自定義LINQ提供器

工欲善其事,必先利其器。這個(gè)道理不論是傳統(tǒng)的制造業(yè)還是如今的軟件開(kāi)發(fā)業(yè),都是放之于四海皆準(zhǔn)的道理。就拿自定義LINQ提供器來(lái)說(shuō)吧,如今的發(fā)展也是如新月異。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、德欽網(wǎng)站維護(hù)、網(wǎng)站推廣。

隨著.NET 3.5的正式發(fā)布,自定義LINQ提供器的實(shí)現(xiàn)如雨后春筍般不斷涌現(xiàn)。而要開(kāi)發(fā)自己的自定義LINQ提供器還是需要花費(fèi)一定的精力的,但Mehfuz Hossain通過(guò)他的開(kāi)源項(xiàng)目——LinqExtender,讓大家可以輕松的開(kāi)發(fā)自己的自定義LINQ提供器。

Mehfuz Hossain在他的LinqExtender介紹文章中,對(duì)LinqExtender作了這樣的介紹:

LinqExtender暴露了如下這樣一個(gè)模型,讓開(kāi)發(fā)人員當(dāng)創(chuàng)建一個(gè)自定義提供器的只用關(guān)注于應(yīng)用程序邏輯,而不是查詢的內(nèi)部機(jī)理。它位于自定義LINQ框架和自定義提供器之間。

LinqExtender幫助我們完成了大量表達(dá)式解析和處理的工作,這樣,我們無(wú)需借助Reflection這樣的函數(shù)庫(kù)就能實(shí)現(xiàn)自己的自定義LINQ提供器。

LinqExtender主要提供了2個(gè)基類來(lái)幫助開(kāi)發(fā)自定義LINQ提供器:QueryObjectBase和Query。

Mehfuz Hossain為了介紹LinqExtender的用法,還給出了一個(gè)簡(jiǎn)單自定義LINQ提供器實(shí)現(xiàn)——OpenLinqToSql。OpenLinqToSql的基本實(shí)現(xiàn)如下:

實(shí)體類需要繼承于QueryObjectBase基類:

 
 
 
  1. class Book : QueryObjectBase  
  2.     {  
  3.         [LinqVisible, Identity]  
  4.         public int? Id { getset; }  
  5.         [LinqVisible]  
  6.         public string Author { getset; }    
  7.         [LinqVisible]  
  8.         public string Title { getset; }    
  9.         [LinqVisible]  
  10.         public string ISBN { getset; }    
  11.         [LinqVisible]  
  12.         public DateTime? LastUpdated {getset;}    
  13.         public override bool IsNew    
  14.         {  
  15.             get  
  16.             {  
  17.                 return Id == null;  
  18.             }  
  19.         }  
  20.     }

自定義LINQ提供器的核心類,需要繼承于Query基類:

 
 
 
  1. public class SqlQuery : Query where T : QueryObjectBase  
  2. {  
  3. ....  
  4. ....  
  5. }

要實(shí)現(xiàn)對(duì)SQL的處理需要按照如下的邏輯進(jìn)行編碼:

  
  
  
  1. if (bucket.ItemsToTake != null)  
  2. {  
  3. // 1.Build Select statement using WITH    
  4. }  
  5. else 
  6. {  
  7. // 2.General select statement followed by order by , if any    
  8. }  
  9. // 3. Run query and fill IModify collection.


使用LinqExtender雖然可以幫助開(kāi)發(fā)人員輕松的實(shí)現(xiàn)自己的自定義LINQ提供器,但是它還不那么成熟和完備,如目前的1.3版本缺乏對(duì)Group和Join等子句的支持;同時(shí)要求實(shí)體類繼承于QueryObjectBase基類也是一個(gè)不小的弱點(diǎn)。


新聞標(biāo)題:如何更簡(jiǎn)單實(shí)現(xiàn)自定義LINQ提供器
文章地址:http://www.5511xx.com/article/dhhojpe.html