您好,登錄后才能下訂單哦!
怎么采用EntityFramework.Extended 對EF進行擴展,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
前言
今天我們來講講EntityFramework.Extended
首先科普一下這個EntityFramework.Extended是什么,如下:
這是一個對Entity Framework進行擴展的類庫.
完全支持EF 5.0/6.0+,
GitHub地址 https://github.com/loresoft/EntityFramework.Extended,
最后一次更新是在2015/07/10
這個庫支持批量更新,刪除。查詢結(jié)果緩存和審計日志。
這個擴展對于每次批量操縱只生成一條sql語句,而不會像EntityFramework供給的原生辦法那樣批量N條數(shù)據(jù)就要生成N條sql語句
采用的環(huán)境與技術
系統(tǒng):WIN7
數(shù)據(jù)庫:SQL Server2008
相關技術:MVC5+EF6.1.3+EntityFramework.Extended6.0
第一章:批量操作數(shù)據(jù)庫
批量刪除:
//記得引用using EntityFramework.Extensions;//這兩種寫法都可以,Context是你的EF上下文對象.context.LogData.Delete(a => a.EntityKey == "aa"); context.LogData.Where(a => a.EntityKey == "aa").Delete();
批量更新:
//data為修改的行數(shù)int data =context.LogData.Where(a=>a.EntityKey=="aa").Update(b=> new LogData { EntityName = "ss" });//第二種寫法,這種是針對DbSet的,已經(jīng)標注過時了 var data = context.LogData.Update(a => a.EntityKey == "aa",b=> new LogData { EntityName = "ss" });
批量增加:
//這個和Extended無關..EF本身就自帶了,單純的給新手一個實例而已,大神無視..int data= context.LogData.AddRange(new List<LogData>());
第二章:批量查詢數(shù)據(jù)庫
原理是這樣的:
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 會根據(jù)IQuerable創(chuàng)建出他自定義的IFutureQuery對象,然后將他加入到IFutureContext.FutureQueries查詢隊列當中,當隊列中的一個對象調(diào)用LoadAction那么就會執(zhí)行IFutureContext.ExecuteFutureQueries()方法, ExecuteFutureQueries 會構建一個批處理查詢的IFutureQuery,最后將所有IFutureQuery的查詢結(jié)果進行更新(也就是查詢).
第三章:EF的數(shù)據(jù)審計日志
數(shù)據(jù)審計日志:
先說一下這個審計的概念,就是對所有的實體的操作(增,刪,改)進行監(jiān)控.
這是他追蹤到的信息,我們可以很方便的把這些信息存入數(shù)據(jù)庫或者你的日志存儲里(文本,XML,緩存)都行 隨你.
下面我們開始講解用法:
首先我們可以在應用程序的入口( Application_Start)配置(我這里以MVC的Web應用來舉例):
這里的配置可不加,用默認的也行。
關于怎么采用EntityFramework.Extended 對EF進行擴展問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業(yè)資訊頻道了解更多相關知識。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。