AgileEAS.NET 之 Linq 2 EAS.NET,Orm支持Linq,寫程序更加的方便

     前面的文章AgileEAS.NET 4.0重構裁剪,新的ORM、支持Linq,正式支持WPF,開放更多的接口簡單的介紹了一下AgileEAS.NET平臺在2011年初的一些重大改進措施,其他涉及到有關於Orm體系的改進以及對linq的支持,AgileEAS.NET 快速平臺之ORM體系的改進與ORM的新成員一文中對Orm的改進做了介紹,本文將詳細的給大家介紹這AgileEAS.NET平臺中Orm對Linq技術的支持。  

Linq介紹:

     LINQ是Language Integrated Query的簡稱,它是集成在.NET編程語言中的一種特性。已成爲編程語言的一個組成部分,在編寫程序時可以得到很好的編譯時語法檢查,豐富的元數據,智能感知、靜態類型等強類型語言的好處。並且它同時還使得查詢可以方便地對內存中的信息進行查詢而不僅僅只是外部數據源。
     LINQ定義了一組標準查詢操作符用於在所有基於.NET平臺的編程語言中更加直接地聲明跨越、過濾和投射操作的統一方式,標準查詢操作符允許查詢作用於所有基於IEnumerable<T>接口的源,並且它還允許適合於目標域或技術的第三方特定域操作符來擴大標準查詢操作符集,更重要的是,第三方操作符可以用它們自己的提供附加服務的實現來自由地替換標準查詢操作符,根據LINQ模式的習俗,這些查詢喜歡採用與標準查詢操作符相同的語言集成和工具支持。
     我們來總體看看LINQ結構:10234967
     需要說明一點的是,Linq是從.NET3.5開始支持的,.NET3.5  Framework 中提供了 LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML等默認支持。
     以上內容是摘抄自互聯網的相關內容,簡單的說明了一下Linq及Linq的應用,如果說單純的那麼Linq是一種語言中的特性的話LINQ to Objects、Linq to SQL就是這種語言特性在對象查詢、SQL查詢中的具體應用。

Linq to EAS.NET:

     Linq to EAS.NET 同LINQ to Objects、Linq to SQL 一樣,是應用了Linq這種語言特殊在AgileEAS.NET平臺的Orm體系的應用,類似於Linq to SQL、Linq to Entities,應用Linq語言特殊實現AgileEAS.NET平臺Orm對象的查詢,讓使用AgileEAS.NET平臺進行開發變得更加簡單和方便。
     下面我們來進行一個簡單的Linq to EAS.NET 應用吧:
     第一步:打開對象設計器,建設一個實體對象(Product),並生成代碼:
p_w_picpath
     第二步:打開AgileEAS.NET平臺對象設計器生成的代碼,增加一個Asp.NET Web應用程序LinqDemo.WebUI,並且在Default.aspx頁面中拖放一個GridView並且設定綁定信息如下:
p_w_picpath
     第三步:使用linq編寫數據查詢代碼並綁定到GridView:
%EXA9@GFL%%1}WHQB7A8)8E
     第四步:修改Web.Config文件,增加以下配置信息:
<EAS.Objects>
    <!--訪問器。-->
    <object name="DataConnection" assembly="EAS.Data" type="EAS.Data.Access.SqlClientConnection" LifestyleType="Singleton">
        <property name="ConnectionString" type="string" value="Data Source=.;Initial Catalog=demo;User ID=sa;Password=sa1234;"/>
    </object>
    <object name="DataAccessor" assembly="EAS.Data" type="EAS.Data.Access.SqlClientAccessor" LifestyleType="Singleton">
        <property name="Connection" type="object" value="DataConnection"/>
    </object>
    <object name="OrmAccessor" assembly="EAS.Data" type="EAS.Data.ORM.OrmAccessor" LifestyleType="Singleton">
        <property name="DataAccessor" type="object" value="DataAccessor"/>
        <property name="PageProvider" type="object" value="PageProvider"/>
    </object>
    <object name="PageProvider" assembly="EAS.Data" type="EAS.Data.ORM.OraclePageProvider" LifestyleType="Thread"/>
    <object name="ServiceBridger" assembly="EAS.MicroKernel" type=" EAS.Services.LocalServiceBridger" LifestyleType="Singleton"/>
    <object name="Logger" assembly="EAS.MicroKernel" type="EAS.Services.TextLogger" LifestyleType="Singleton"/>
</EAS.Objects>
     最後:編譯運行,看看結果:
EIK49TW7_APDW6@H3{9{TF3
     OK,通過以上簡單的過程,基於Linq to EAS.NET實現了一個簡單的like查詢,相信大家已經看到了這個編程的便宜性,接下來我將會在把有關於Linq to EAS.NET所實現的表達式做一些簡單的說明。

支持那些表達式:

     Linq所支持的表達式非常的多,AgileEAS.NET平臺只是實現了使用最頻繁的那些表達式,對錶沒有實現的表達式在開發中或者要採用其他進行處理,下面我詳細的向大家介紹AgileEAS.NET所實現的那些表達式:
條件表達式
      Linq to EAS.NET中實現了“=”、“>”、“<”、“>=”、“<=”、“!=”、“like ”匹配、In 查詢、Between 、以及And、Or組合。
排序表達式
      Linq to EAS.NET中實現了Order by ,Order by  Desc排序。
統計及分頁
      Linq to EAS.NET也實現了First、Last、FirstOrDefault、LastOrDefault表達式。
Select New {}
      Linq to EAS.NET也實現了select new {}表達式,這將能大大提高編程的方便性和更高的查詢性能,如下寫法:
p_w_picpath
其他表達式
      Linq to EAS.NET實現了 Count統計以及基於統計的分頁支持Top、Take及Skip表達式。

下一步的計劃:

      在接下來的Linq to EAS.NET版本中我們將陸續支持更表的表達式,在近期將會支持Sum、Average、Max、Min表達式,在下一步Orm支持關係之後將進一步支持join 、left join、right join表達式。
      對於Group by 、Having表達式暫時還沒有考慮到支持。

如何實現Linq的:

     Linq to EAS.NET的實現思想非常的簡單,即解析Linq表達式並轉換爲AgileEAS.NET的查詢表達式樹並由AgileEAS.NET平臺的Orm執行並返回結果。
     在AgileEAS.NET平臺的Orm技術中,我們實現了一個LINQ Provider,即EAS.Data.Linq.DataEntityQuery<T>,在執行任務linq任務之前,並且顯式的定義EAS.Data.Linq.DataEntityQuery<T>實例,由他在解析並勢力Linq語法,在此要感謝李會軍的兩篇文章:打造自己的LINQ Provider(上):Expression Tree揭祕打造自己的LINQ Provider(中):IQueryable和IQueryProvider,遺憾的是,他並沒有寫出下篇,感興趣的朋友去看看吧。      AgileEAS.NET平臺ActiveXForm運行容器的客戶端工作插件。
     本文中的小例子及其相關的對象定義文件、建表及數據創建腳本、源代碼文件,請大家從這裏下載

下載說明

     有關於平臺最新版本的最新發布版本的程序集、類庫手冊、相關資料,請大家從AgileEAS.NET平臺的官網http://www.smarteas.net/進行下載,官網設有獨立的下載頁面,從這裏下載:官網下載

如何聯繫

     如果您在使用AgileEAS.NET開發平臺中有什麼問題,請使用如下幾種聯繫方式或者溝通方式。
1、官方網站:
     AgileEAS.NET平臺:http://www.smarteas.net/
     敏捷軟件工程實驗室:http://www.agilelab.cn/
2、AgileEAS.NET平臺交流羣:
     AgileEAS.NET平臺交流羣:120661978(超級羣)[新建]
     AgileEAS.NET平臺交流羣:125643764(高級羣)[新建]
     AgileEAS.NET平臺交流羣:147168308(高級羣)[新建]
3、系統架構交流羣:
     系統架構交流羣:9105332(高級羣)(已滿)
     系統架構交流羣1:124825459(高級羣)(已滿)
     系統架構交流羣2:49124441(高級羣)(已滿)
     系統架構交流羣3:47025564(高級羣)(已滿)

鏈接


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章