天天看點

采用EntityFramework.Extended 對EF進行擴充(Entity Framework 延伸系列2)

前言

Entity Framework 延伸系列目錄

今天我們來講講EntityFramework.Extended

首先科普一下這個EntityFramework.Extended是什麼,如下:

這是一個對Entity Framework進行擴充的類庫.

完全支援EF 5.0/6.0+,

GitHub位址 https://github.com/loresoft/EntityFramework.Extended,

最後一次更新是在2015/07/10

這個庫支援批量更新,删除。查詢結果緩存和審計日志。

這個擴充對于每次批量操縱隻生成一條sql語句,而不會像EntityFramework供給的原生辦法那樣批量N條資料就要生成N條sql語句

本文采用的環境與技術

系統:WIN7

資料庫:SQL Server2008

相關技術:MVC5+EF6.1.3+EntityFramework.Extended6.0

第一章:批量操作資料庫

批量删除:

批量更新:

批量增加:

第二章:批量查詢資料庫

批量查詢:

原理是這樣的:

E文原文:

Future queries work by creating the appropriate IFutureQuery object that keeps the IQuerable. The IFutureQuery object is then stored in IFutureContext.FutureQueries list. Then, when one of the IFutureQuery objects is enumerated, it calls back to IFutureContext.ExecuteFutureQueries() via the LoadAction delegate. ExecuteFutureQueries builds a batch query from all the stored IFutureQuery objects. Finally, all the IFutureQuery objects are updated with the results from the query.

本屌的辣雞二流子翻譯:

Future 會根據IQuerable建立出他自定義的IFutureQuery對象,然後将他加入到IFutureContext.FutureQueries查詢隊列當中,當隊列中的一個對象調用LoadAction那麼就會執行IFutureContext.ExecuteFutureQueries()方法, ExecuteFutureQueries 會建構一個批處理查詢的IFutureQuery,最後将所有IFutureQuery的查詢結果進行更新(也就是查詢).

第三章:EF的資料審計日志

資料審計日志:

先說一下這個審計的概念,就是對所有的實體的操作(增,删,改)進行監控.

我們先來看一下效果.

采用EntityFramework.Extended 對EF進行擴充(Entity Framework 延伸系列2)

這是他追蹤到的資訊,我們可以很友善的把這些資訊存入資料庫或者你的日志存儲裡(文本,XML,緩存)都行 随你.

下面我們開始講解用法:

首先我們可以在應用程式的入口( Application_Start)配置(我這裡以MVC的Web應用來舉例):

這裡的配置可不加,用預設的也行,當然有需要的可以參考

https://github.com/loresoft/EntityFramework.Extended/wiki/Audit-Log

這裡有更詳細的配置介紹

下面我們開始直接用,

舉個栗子:

最終結果如下:

采用EntityFramework.Extended 對EF進行擴充(Entity Framework 延伸系列2)

可以看到我們很友善的監控到了我們剛剛進行的三次操作.

(重要提示:這裡需要注意的是,這裡的審計日志隻能監控到正常的寫法的增删改,對于上面的批量增删改很詭異的是監控不到的,作為自己寫的擴充庫,自己卻監控不到 - -,這不得不說是很蛋疼..)

第四章:查詢緩存

代碼如下:

這個我用的不多,就不詳細的贅述了,有興趣的朋友可以自行檢視

https://github.com/loresoft/EntityFramework.Extended/wiki/Query-Result-Cache

寫在最後

文章到此就結束了,寫文章的過程也是自己溫故而知新的過程.寫的不好希望大神多多指正,我很希望能起到抛磚引玉的效果,上篇文章就得到了很多好的建議,希望大家不啬賜教.

作者:顧振印

出處:http://www.cnblogs.com/GuZhenYin/

如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”将是我最大的寫作動力!本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面