成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何更簡單實現自定義LINQ提供器

開發 后端
本文介紹了實現自定義LINQ提供器所需要的一種工具——LinqExtender。這種工具是全開源的開發工具,為我們提供了大量的表達式和兩個幫助開發的基類。

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

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

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

LinqExtender暴露了如下這樣一個模型,讓開發人員當創建一個自定義提供器的只用關注于應用程序邏輯,而不是查詢的內部機理。它位于自定義LINQ框架和自定義提供器之間。

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

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

Mehfuz Hossain為了介紹LinqExtender的用法,還給出了一個簡單自定義LINQ提供器實現——OpenLinqToSql。OpenLinqToSql的基本實現如下:

實體類需要繼承于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. ....    

要實現對SQL的處理需要按照如下的邏輯進行編碼:

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

【編輯推薦】

  1. LINQ——語言級集成查詢入門指南
  2. LINQ查詢的目的與實現手段
  3. LINQ查詢表達式深入剖析
  4. 實例二:綁定到LINQ查詢的結果
  5. LINQ的演變及其對C#設計的影響
責任編輯:林琳 來源: 拼吾愛程序人生
相關推薦

2009-09-07 22:00:15

LINQ自定義

2009-09-07 21:25:59

Linq自定義

2015-01-14 15:06:48

定義相機

2025-03-05 10:49:32

2025-05-08 08:30:00

Redis自定義序列化數據庫

2009-09-03 13:34:03

.NET自定義控件

2023-01-03 07:40:27

自定義滑塊組件

2021-05-29 16:12:00

通信協議設備

2013-01-10 09:36:19

NagiosNagios插件

2009-09-03 15:46:57

C#自定義事件

2009-09-15 15:18:40

Linq連接查詢

2009-06-18 10:07:44

LINQ to ACC

2009-09-17 09:24:57

Linq實現分頁

2013-06-27 11:10:01

iOS開發自定義UISlider

2021-03-16 10:39:29

SpringBoot參數解析器

2009-11-25 14:36:39

PHP函數usort(

2022-05-18 07:44:13

自定義菜單前端

2020-09-18 10:12:24

KotlinTCP網絡協議

2009-09-15 11:34:47

Linq多條件查詢

2010-02-07 14:02:16

Android 界面
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品久久一区二区三区 | 一级二级三级黄色 | 久久涩涩 | 亚洲在线| 国产乱码精品一品二品 | 成人小视频在线免费观看 | 欧美国产精品久久久 | 欧美福利视频一区 | 国产精品久久久久久婷婷天堂 | 久久国产精品-久久精品 | 三级免费毛片 | 女同久久另类99精品国产 | 亚洲婷婷一区 | 在线永久看片免费的视频 | 日韩午夜在线播放 | 久久精品国产久精国产 | 亚洲啊v| 在线综合视频 | 女女爱爱视频 | 成人影视网 | 精品久久久一区 | 四虎影视免费在线 | 午夜精品一区二区三区在线视频 | 日韩最新网站 | 伊人手机在线视频 | 中文成人在线 | 精品乱子伦一区二区三区 | 亚洲最大av网站 | 超碰成人免费 | 黄色成人免费在线观看 | 久久伊人一区二区 | 亚洲一区二区三区四区五区午夜 | 综合久久国产 | 韩日一区二区三区 | 亚洲精品无 | 成年人的视频免费观看 | 一区二区在线 | 免费一二区 | 69精品久久久久久 | 天天草天天爱 | 狠狠色综合久久丁香婷婷 |