この記事では、Entity Framework に基づいたカスタム ページング効果、追加、削除、変更の一般的な実装について詳しく紹介します。興味のある方は、
はじめに
コード
例の実行方法
リポジトリ基本クラス - クエリ
includeProperties は複数のテーブルにあり、関連するテーブルを結合します。 EF はデフォルトで遅延読み込みに設定されているため、関連付けられたテーブルはデフォルトではすぐにロードされないため、コードを記述するときに注意しないと、for ループで n ワードのテーブルをループする可能性があります。 includeProperties パラメータを使用して、クエリ中に関連テーブルを結合します。
public virtual T Create(Tentity)
public virtual T Update(Tentity)public virtual T CreateOrUpdate(Tentity)
なお、トランザクションの実装に関しては、複数のリポジトリが DBContext を共有する Unit of Work モードを使用しました。UOW については、CommonUnitOfWork を参照してください。 .cs。
UOW を呼び出す場合、基本的には次のようになります:
public virtual Tuple<IEnumerable<T>, int> Find(Expression<Func<T, bool>> criteria , int pageIndex , int pageSize , string[] asc , string[] desc , params Expression<Func<T, object>>[] includeProperties)UnitOfWork から 1 つ以上のリポジトリを取得し、DBContext を共有し、追加、削除、および変更操作を実行し、最後に uow が SaveChanges を統合します。
Repositoryの派生クラス
var uow = new EFUnitOfWork(); var repo = uow.GetLogRepository(); repo.Create(new Log { LevelId = 1, Thread = "", Location = "Manual Creation", Message = "This is manually created log.", CreateTime = DateTimeOffset.Now, Date = DateTime.Now }); uow.Commit();
エンティティの生成について
もちろん、Code First が気に入っている場合は問題ありません。この記事の実装は引き続き適用されます。
CommonEFContext.cs には、EnableTraceSql という設定項目があり、これが true の場合、EF によって生成された SQL が nlog によって記録されます。データベースへの nlog ログを構成しました。つまり、サンプル プロジェクトを実行すると、クエリを実行するたびに新しいログ レコードが追加され、その内容はクエリ中に生成された SQL です。このような実装では、他のユーザーによって呼び出されるように記述されたインターフェイスの場合、クエリ パラメーターを明確に決定できます。次に、次のように呼び出します。このクエリ メソッド コードから、クエリ条件が LevelName と Message が等しく、Message が Like であることが明確にわかります。これらは、適切にカプセル化されている LogSearchSpeficiation に実装されています。
以上がEntity Framework カスタム ページング効果の実装チュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。