偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何更簡單實(shí)現(xiàn)自定義LINQ提供器

開發(fā) 后端
本文介紹了實(shí)現(xiàn)自定義LINQ提供器所需要的一種工具——LinqExtender。這種工具是全開源的開發(fā)工具,為我們提供了大量的表達(dá)式和兩個(gè)幫助開發(fā)的基類。

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

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

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

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

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

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

Mehfuz Hossain為了介紹LinqExtender的用法,還給出了一個(gè)簡單自定義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. ....    

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

【編輯推薦】

  1. LINQ——語言級(jí)集成查詢?nèi)腴T指南
  2. LINQ查詢的目的與實(shí)現(xiàn)手段
  3. LINQ查詢表達(dá)式深入剖析
  4. 實(shí)例二:綁定到LINQ查詢的結(jié)果
  5. LINQ的演變及其對(duì)C#設(shè)計(jì)的影響
責(zé)任編輯:林琳 來源: 拼吾愛程序人生
相關(guān)推薦

2009-09-07 22:00:15

LINQ自定義

2009-09-07 21:25:59

Linq自定義

2015-01-14 15:06:48

定義相機(jī)

2025-03-05 10:49:32

2009-09-03 13:34:03

.NET自定義控件

2023-01-03 07:40:27

自定義滑塊組件

2025-05-08 08:30:00

Redis自定義序列化數(shù)據(jù)庫

2013-01-10 09:36:19

NagiosNagios插件

2021-05-29 16:12:00

通信協(xié)議設(shè)備

2009-09-03 15:46:57

C#自定義事件

2013-06-27 11:10:01

iOS開發(fā)自定義UISlider

2009-09-15 15:18:40

Linq連接查詢

2009-06-18 10:07:44

LINQ to ACC

2009-09-17 09:24:57

Linq實(shí)現(xiàn)分頁

2021-03-16 10:39:29

SpringBoot參數(shù)解析器

2009-11-25 14:36:39

PHP函數(shù)usort(

2022-05-18 07:44:13

自定義菜單前端

2020-09-18 10:12:24

KotlinTCP網(wǎng)絡(luò)協(xié)議

2010-02-07 14:02:16

Android 界面

2024-12-27 15:37:23

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)