EntityFramework.Extendedを使用してEFを拡張します(Entity Framework Extension Series 2)



Use Entityframework Extended Extend Ef



序文

今日はEntityFramework.Extendedについてお話します



まず、次のように、このEntityFramework.Extendedとは何ですか。

これは、EntityFrameworkを拡張するクラスライブラリです。



EF 5.0 / 6.0+を完全にサポートします。

GitHubアドレス https://github.com/loresoft/EntityFramework.Extended

最終更新は2015/07/10でした



このライブラリは、バッチ更新と削除をサポートしています。クエリ結果キャッシュと監査ログ。

この拡張機能は、バッチ操作ごとに1つのSQLステートメントのみを生成し、EntityFrameworkによって提供されるネイティブメソッドとしてNデータのバッチでNのSQLステートメントを生成しません。

この記事で使用されている環境とテクノロジー

システム:WIN7

データベース:SQL Server2008

関連テクノロジー:MVC5 + EF6.1.3 + EntityFramework.Extended6.0

第1章:データベースのバッチ操作

バッチ削除:

//Remember to quoteusing EntityFramework.Extensions//Either way is possible, Context is your EF context object.context.LogData.Delete(a => a.EntityKey == 'aa') context.LogData.Where(a => a.EntityKey == 'aa').Delete()

バッチ更新:

//data is the number of rows modifiedint data =context.LogData.Where(a=>a.EntityKey=='aa').Update(b=> new LogData { EntityName = 'ss' })//The second way of writing, this is for DbSet, has been marked outdated var data = context.LogData.Update(a => a.EntityKey == 'aa',b=> new LogData { EntityName = 'ss' })

バッチ増加:

//This has nothing to do with Extended... EF itself comes with it, just give the novice an example, the god ignores it...int data= context.LogData.AddRange(new List())

第2章:データベースをバッチでクエリする

バッチクエリ:

640?wx_fmt = png

原則はこれです:

Eの原文:

将来のクエリは、IQuerableを保持する適切なIFutureQueryオブジェクトを作成することによって機能します。その後、IFutureQueryオブジェクトはIFutureContext.FutureQueriesリストに格納されます。次に、IFutureQueryオブジェクトの1つが列挙されると、LoadActionデリゲートを介してIFutureContext.ExecuteFutureQueries()を呼び出します。 ExecuteFutureQueriesは、保存されているすべてのIFutureQueryオブジェクトからバッチクエリを作成します。最後に、すべてのIFutureQueryオブジェクトが、クエリの結果で更新されます。

このコックのスパイシーチキンエロ翻訳:

Futureは、IQuerableに基づいてカスタムIFutureQueryオブジェクトを作成し、それをIFutureContext.FutureQueriesクエリキューに追加します。キュー内のオブジェクトがLoadActionを呼び出すと、IFutureContext.ExecuteFutureQueries()メソッドが実行され、ExecuteFutureQueriesがバッチを作成します。 IFutureQueryをクエリし、最後にすべてのIFutureQueryクエリ結果(つまり、クエリ)を更新します。

第3章:EFのデータ監査ログ

データ監査ログ:

最初に、すべてのエンティティの操作(追加、削除、変更)を監視する監査の概念について説明します。

まず効果を見てみましょう。

640?wx_fmt = png

これは彼が追跡する情報です。この情報はデータベースまたはログストレージ(テキスト、XML、キャッシュ)に簡単に保存できます。

以下では、使用法について説明します。

まず、アプリケーションの入り口(Application_Start)で構成できます(例としてMVC Webアプリケーションを使用します)。

ここでの構成は省略できます。デフォルトの構成も問題ありません。もちろん、必要に応じて参照できます。

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

これがより詳細な構成の紹介です

640?wx_fmt = png

以下では、直接使用を開始します。

栗を与える:

640?wx_fmt = png

最終結果は次のとおりです。

640?wx_fmt = png

実行した3つの操作を便利に監視していることがわかります。

(重要な注意:ここで注意する必要があるのは、ここでの監査ログは、従来の書き込みの追加、削除、および変更のみを監視できるということです。上記の追加、削除、変更のバッチが監視できないのは非常に奇妙です、自分で書いた拡張ライブラリですが、監視できません-、痛いと言わざるを得ません。)

第4章:クエリキャッシュ

コードは次のように表示されます。

640?wx_fmt = png

あまり使わないので、詳しくは説明しません。興味のある友達は自分でチェックできます。

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

最後に書く

これで記事は終わりです。記事を書くプロセスは、古いものから学ぶプロセスでもあります。うまく書けません。神々が私をたくさん訂正してくれることを願っています。レンガを投げたり、翡翠を導入したりする効果が欲しいです。前回の記事には多くの良い提案がありました。誰もが教えてくれないことを願っています

元のアドレス:http://www.cnblogs.com/GuZhenYin/p/5482288.html


.NETコミュニティニュース、詳細な良い記事、WeChatでの検索dotNETクロスプラットフォームまたは、QRコードをスキャンしてフォローしてください

640?wx_fmt = jpeg