ABP入門シリーズ(4) - ドメイン層の定義とウェアハウジングの実装
リポジトリ: リポジトリは、データアクセスのためにデータベースを操作するために使用されます。ウェアハウジング インターフェイスはドメイン層で定義されますが、ウェアハウジング実装クラスはインフラストラクチャ層で作成する必要があります。
ABP では、ウェアハウス クラスは IRepository インターフェイスを実装する必要があります。これは、同期メソッドと非同期メソッドを含む、一般的に使用される追加、削除、変更、集計メソッドを定義します。これには主に次のメソッドが含まれます:
ABP は、さまざまな ORM フレームワークにこのインターフェイスのデフォルト実装を提供します。
EntityFramework の場合は、EfRepositoryBase
NHibernate の場合、NhRepositoryBase
ジェネリック バージョンの実装は、ほとんどの場合、これらのメソッドで一般エンティティのニーズを満たすのに十分であることを意味します。これらのメソッドがエンティティに十分である場合、このエンティティに必要なリポジトリ インターフェイス/クラスを作成する必要はありません。
アプリケーション サービス レイヤーでウェアハウス参照を直接定義し、コンストラクターを通じてそれを挿入できます。タスク ウェアハウジングは、次の方法でアプリケーション サービス層で使用できます:
public class TaskAppService : ITaskAppService { private readonly IRepository<Task> _taskRepository; public TaskAppService(IRepository<Task> taskRepository) { _taskRepository = taskRepository; }
これは、サンプル コードで使用されるメソッドです
2. カスタム ウェアハウジングを実装する方法
どのタスクがタスクに割り当てられているかを調べる必要があるとします。とあるユーザー。
ドメイン層で、IRepositories フォルダーを作成し、IBackendTaskRepository を定義します。
namespace LearningMpaAbp.IRepositories {/// <summary>/// 自定义仓储示例/// </summary>public interface IBackendTaskRepository : IRepository<Task> { /// <summary> /// 获取某个用户分配了哪些任务 /// </summary> /// <param name="personId">用户Id</param> /// <returns>任务列表</returns> List<Task> GetTaskByAssignedPersonId(long personId); } }
このウェアハウジングをインフラストラクチャ層で実装します。
namespace LearningMpaAbp.EntityFramework.Repositories {public class BackendTaskRepository:LearningMpaAbpRepositoryBase<Task>,IBackendTaskRepository{ public BackendTaskRepository(IDbContextProvider<LearningMpaAbpDbContext> dbContextProvider) : base(dbContextProvider) { } /// <summary> /// 获取某个用户分配了哪些任务 /// </summary> /// <param name="personId">用户Id</param> /// <returns>任务列表</returns> public List<Task> GetTaskByAssignedPersonId(long personId) { var query = GetAll(); if (personId>0) { query = query.Where(t => t.AssignedPersonId == personId); } return query.ToList(); } } }
このリポジトリ実装は、テンプレートによって生成された LearningMpaAbpRepositoryBase 汎用抽象クラスを継承し、IBackendTaskRepository インターフェイスを実装します。ここでは、実装クラスのパラメーター化されたコンストラクターを明示的に宣言し、汎用 IDbContextProvider を使用してデータベース コンテキスト サブクラス ChargeStationContext を親クラスのコンストラクターに渡す必要があります。
3. 倉庫保管上の注意事項
保管方法では、ABP がデータベース接続を自動的に開閉します。
ウェアハウスメソッドが呼び出されると、データベース接続が自動的に開かれ、トランザクションが開始されます。
リポジトリ メソッドが別のリポジトリ メソッドを呼び出すと、実際には同じデータベース接続とトランザクションを共有します。
IRepository インターフェイスはデフォルトで ITransientDependency インターフェイスを継承するため、Repository オブジェクトは一時的なものです。したがって、IOC コンテナは、ウェアハウジング オブジェクトを挿入する必要がある場合にのみ、ウェアハウス オブジェクトの新しいインスタンスを自動的に作成します。
デフォルトの汎用リポジトリは、ほとんどのニーズを満たすことができます。これが満たされない場合にのみ、カスタマイズされたリポジトリが作成されます。
ソースコードはGithub-LearningMpaAbpにアップロードされていますので、ご自身で参照してください。
ABP 入門シリーズディレクトリ - Abp フレームワークを学ぶための実践的な演習
上記は ABP 入門シリーズ (4) - ドメイン層でのウェアハウジングの定義と実装の内容です。さらに関連する内容については、PHP 中国語に注目してください。ウェブサイト (www.php.cn)!

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











C#.NETインタビューの質問と回答には、基本的な知識、コアの概念、高度な使用が含まれます。 1)基本知識:C#は、Microsoftが開発したオブジェクト指向言語であり、主に.NETフレームワークで使用されています。 2)コアの概念:委任とイベントは動的な結合方法を可能にし、LINQは強力なクエリ関数を提供します。 3)高度な使用:非同期プログラミングは応答性を向上させ、式ツリーは動的コード構造に使用されます。

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。

C#.NETは、複数のアプリケーション開発をサポートする強力なツールとライブラリを提供するため、依然として重要です。 1)C#は.NETフレームワークを組み合わせて、開発を効率的かつ便利にします。 2)C#のタイプの安全性とゴミ収集メカニズムは、その利点を高めます。 3).NETは、クロスプラットフォームの実行環境とリッチAPIを提供し、開発の柔軟性を向上させます。

c#.netisversatileforbothwebanddesktopdevelopment.1)forweb、useasp.netfordynamicapplications.2)fordesktop、equindowsorwpfforrichinterfaces.3)usexamarinforcross-platformdeveliment、enabling deshacrosswindows、

C#シニア開発者とのインタビューでは、非同期プログラミング、LINQ、.NETフレームワークの内部作業原則などのコア知識をマスターする必要があります。 1.非同期プログラミングは、非同期を通じて操作を簡素化し、アプリケーションの応答性を向上させるのを待ちます。 2.LinqはSQLスタイルでデータを操作し、パフォーマンスに注意を払います。 3.ネットフレームワークのCLRはメモリを管理し、ガベージコレクションに注意して使用する必要があります。

c#.netissuitableforenterprise-levelApplicationsとsystemduetoitsSystemdutyping、richlibraries、androbustperformance.

C#は、エンタープライズレベルのアプリケーション、ゲーム開発、モバイルアプリケーション、Web開発で広く使用されています。 1)エンタープライズレベルのアプリケーションでは、C#がasp.netcoreにWebAPIを開発するためによく使用されます。 2)ゲーム開発では、C#がUnityエンジンと組み合わされて、ロールコントロールやその他の機能を実現します。 3)C#は、コードの柔軟性とアプリケーションのパフォーマンスを改善するために、多型と非同期プログラミングをサポートします。
