ホームページ バックエンド開発 C#.Net チュートリアル Entity Framework カスタム ページング効果の実装チュートリアル

Entity Framework カスタム ページング効果の実装チュートリアル

Aug 12, 2017 pm 04:39 PM
framework カスタマイズ

この記事では、Entity Framework に基づいたカスタム ページング効果、追加、削除、変更の一般的な実装について詳しく紹介します。興味のある方は、

はじめに

を参照してください。 Dapper に基づくページングの実装を説明しました。次に、Entity Framework に基づくページングの実装と、追加、削除、および変更の汎用実装を作成してみましょう。

コード

最初にコードをアップロードします: https://github.com/jinweijie/EF.GenericRepository

例の実行方法

以前と同様:

1. コードを複製します。まず、Database

2のDatabase.7zを解凍します。Sql Server LocalDBにアタッチします。 SQL Server の LocalDB を使用していない場合は、App.Config で接続文字列を変更する必要があります。

3. Ctrl + F5 を押してサンプル プログラムを実行します。

リポジトリ基本クラス - クエリ

CommonAbstractRepository.cs は、追加、削除、変更、クエリのいくつかのメソッドを実装するリポジトリの基本クラスです。 AbstractRepository クエリ メソッドの 1 つ。カスタム ページング クエリに使用されます。criteria はクエリ条件としての式であり、パラメーター pageIndex、pageSize、asc、desc はページング関連のパラメーターです。

複数のテーブル (関連付けられたテーブル) について:


includeProperties は複数のテーブルにあり、関連するテーブルを結合します。 EF はデフォルトで遅延読み込みに設定されているため、関連付けられたテーブルはデフォルトではすぐにロードされないため、コードを記述するときに注意しないと、for ループで n ワードのテーブルをループする可能性があります。 includeProperties パラメータを使用して、クエリ中に関連テーブルを結合します。

リポジトリ基本クラス - 追加、削除、変更

AbstractRepository は、ジェネリックスを使用して追加、削除、変更メソッドを実装しました:

public virtual T Create(Tentity)
public virtual T Update(Tentity)
public virtual T CreateOrUpdate(Tentity)

public virtual void Delete(TId id)

なお、トランザクションの実装に関しては、複数のリポジトリが 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の派生クラス

AbstractRepositoryが既に存在しているため、追加、削除、変更、確認のメソッドが多数実装されているため、サンプルプロジェクトのLogRepositoryなどの派生クラスは基本的に非常にシンプルになり、主に実装することができます。サンプル プロジェクトでは、特別なビジネス ロジックがないため、非常に単純になります:


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();
ログイン後にコピー

エンティティの生成について


データベースを最初に実装することを好みます。最初にデータベースを設計します。次に、edmx リバース エンジニアリングを使用して、POCO を生成します。 Entityディレクトリ内の関連ファイルを参照できます。

もちろん、Code First が気に入っている場合は問題ありません。この記事の実装は引き続き適用されます。

Logging ログを使用して EF SQL を追跡します

Entity Framework を使用する場合は、開発段階で潜在的なパフォーマンスの問題を発見し、混乱を避けることができるように、EF によって生成された SQL に注意を払うことが最善です。運用環境:)

CommonEFContext.cs には、EnableTraceSql という設定項目があり、これが true の場合、EF によって生成された SQL が nlog によって記録されます。データベースへの nlog ログを構成しました。つまり、サンプル プロジェクトを実行すると、クエリを実行するたびに新しいログ レコードが追加され、その内容はクエリ中に生成された SQL です。このような実装では、他のユーザーによって呼び出されるように記述されたインターフェイスの場合、クエリ パラメーターを明確に決定できます。次に、次のように呼び出します。このクエリ メソッド コードから、クエリ条件が LevelName と Message が等しく、Message が Like であることが明確にわかります。これらは、適切にカプセル化されている LogSearchSpeficiation に実装されています。

以上がEntity Framework カスタム ページング効果の実装チュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Netflix でカスタム アバターをすばやくセットアップする方法 Netflix でカスタム アバターをすばやくセットアップする方法 Feb 19, 2024 pm 06:33 PM

Netflix のアバターは、ストリーミング ID を視覚的に表現したものです。ユーザーはデフォルトのアバターを超えて自分の個性を表現できます。 Netflix アプリでカスタム プロフィール写真を設定する方法については、この記事を読み続けてください。 Netflix でカスタム アバターをすばやく設定する方法 Netflix には、プロフィール写真を設定する機能が組み込まれていません。ただし、ブラウザに Netflix 拡張機能をインストールすることでこれを行うことができます。まず、Netflix 拡張機能のカスタム プロフィール画像をブラウザにインストールします。 Chrome ストアで購入できます。拡張機能をインストールした後、ブラウザで Netflix を開き、アカウントにログインします。右上隅にあるプロフィールに移動し、をクリックします

Microsoft NET Framework のインストールの問題エラー コード 0x800c0006 の修正 Microsoft NET Framework のインストールの問題エラー コード 0x800c0006 の修正 May 05, 2023 pm 04:01 PM

開発者とエンド ユーザーが Windows 上で最新バージョンのアプリケーションを実行するには、.NET Framework 4 が必要です。しかし、.NET Framework 4 のダウンロードとインストール中に、多くのユーザーから、インストーラーが途中で停止し、「ダウンロードがエラー コード 0x800c0006 で失敗したため、.NET Framework 4 はインストールされていません」というエラー メッセージが表示されるという苦情が寄せられました。デバイスに .NETFramework4 をインストールしているときにもこの問題が発生する場合は、正しい場所にいます。

Win11で背景画像をカスタマイズする方法 Win11で背景画像をカスタマイズする方法 Jun 30, 2023 pm 08:45 PM

Win11で背景画像をカスタマイズするにはどうすればよいですか?新しくリリースされた win11 システムには多くのカスタム機能がありますが、多くの友人はこれらの機能の使い方を知りません。一部の友人は、背景画像が比較的単調だと考えており、背景画像をカスタマイズしたいと考えていますが、背景画像をカスタマイズする方法がわかりません。背景画像を定義する方法がわからない場合、エディターは次の手順をまとめています。 Win11 で背景画像をカスタマイズするには、以下をご覧ください。 Win11 で背景画像をカスタマイズする手順: 1. 図に示すように、デスクトップの [勝利] ボタンをクリックし、ポップアップ メニューの [設定] をクリックします。 2. 図に示すように、設定メニューに入り、「個人用設定」をクリックします。 3. 図に示すように、[Personalization] に入り、[Background] をクリックします。 4. 背景設定を入力し、クリックして写真を参照します

Windows 11/10 で SetupDiag を使用して Windows アップグレードの問題を特定する方法 Windows 11/10 で SetupDiag を使用して Windows アップグレードの問題を特定する方法 Apr 17, 2023 am 10:07 AM

Windows 11 または Windows 10 PC でアップグレードまたはアップデートの問題が発生すると、通常、失敗の背後にある実際の理由を示すエラー コードが表示されます。ただし、エラー コードが表示されずにアップグレードまたはアップデートが失敗すると、混乱が生じることがあります。便利なエラー コードを使用すると、問題の場所が正確にわかるので、修正を試みることができます。ただし、エラー コードが表示されないため、問題を特定して解決することが困難になります。エラーの背後にある理由を見つけるだけでも多くの時間がかかります。この場合、Microsoft が提供する SetupDiag という専用ツールを使用すると、エラーの背後にある本当の理由を簡単に特定できます。

Python でベン図を作成およびカスタマイズするにはどうすればよいですか? Python でベン図を作成およびカスタマイズするにはどうすればよいですか? Sep 14, 2023 pm 02:37 PM

ベン図は、セット間の関係を表すために使用される図です。ベン図を作成するには、matplotlib を使用します。 Matplotlib は、対話型のチャートやグラフを作成するために Python で一般的に使用されるデータ視覚化ライブラリです。インタラクティブな画像やグラフの作成にも使用されます。 Matplotlib は、チャートやグラフをカスタマイズするための多くの関数を提供します。このチュートリアルでは、ベン図をカスタマイズするための 3 つの例を説明します。 Example の中国語訳は次のとおりです: Example これは 2 つのベン図の交差を作成する簡単な例です。最初に、必要なライブラリをインポートし、ベンをインポートしました。次に、データセットを Python セットとして作成し、その後「venn2()」関数を使用して

Eclipseでショートカットキー設定をカスタマイズする方法 Eclipseでショートカットキー設定をカスタマイズする方法 Jan 28, 2024 am 10:01 AM

Eclipse でショートカット キーの設定をカスタマイズするにはどうすればよいですか?開発者にとって、ショートカット キーをマスターすることは、Eclipse でコーディングする際の効率を向上させるための鍵の 1 つです。強力な統合開発環境として、Eclipse は多くのデフォルトのショートカット キーを提供するだけでなく、ユーザーが独自の好みに応じてショートカット キーをカスタマイズすることもできます。この記事では、Eclipseでショートカットキーの設定をカスタマイズする方法と具体的なコード例を紹介します。 Eclipseを開く まず、Eclipseを開いて次のように入力します。

CakePHP でカスタム ページネーションを作成するにはどうすればよいですか? CakePHP でカスタム ページネーションを作成するにはどうすればよいですか? Jun 04, 2023 am 08:32 AM

CakePHP は、開発者に多くの便利なツールと機能を提供する強力な PHP フレームワークです。その 1 つはページネーションです。これは、大量のデータを複数のページに分割し、閲覧と操作を容易にするのに役立ちます。デフォルトでは、CakePHP はいくつかの基本的なページネーション メソッドを提供しますが、場合によってはカスタムのページネーション メソッドを作成する必要がある場合があります。この記事では、CakePHP でカスタム ページネーションを作成する方法を説明します。ステップ 1: カスタム ページネーション クラスを作成する まず、カスタム ページネーション クラスを作成する必要があります。これ

iOS 17を搭載したiPhoneのApple Musicでクロスフェードを有効にしてカスタマイズする方法 iOS 17を搭載したiPhoneのApple Musicでクロスフェードを有効にしてカスタマイズする方法 Jun 28, 2023 pm 12:14 PM

iPhone の iOS 17 アップデートは、Apple Music にいくつかの大きな変更をもたらします。これには、プレイリストで他のユーザーとコラボレーションしたり、CarPlay を使用してさまざまなデバイスから音楽再生を開始したりすることが含まれます。これらの新機能の 1 つは、Apple Music でクロスフェードを使用できる機能です。これにより、トラック間をシームレスに移行できるようになり、複数のトラックを聴く場合に優れた機能になります。クロスフェードは全体的なリスニング体験を向上させるのに役立ち、トラックが変わったときに驚いたり、体験から脱落したりすることがなくなります。この新機能を最大限に活用したい場合は、iPhone での使用方法を次に示します。最新の情報が必要な Apple Music のクロスフェードを有効にしてカスタマイズする方法

See all articles