0

N層アーキテクチャで削除されないエンティティを処理するためのベストプラクティスのアプローチは何ですか。問題のアーキテクチャには、サービス層とリポジトリ層があります。リポジトリは、データベースに直接アクセスできる唯一のレイヤーです(ORMを介して)。現在、リポジトリレイヤーは主にCRUD操作を処理します。このレイヤーは、特定のステータスに基づいてエンティティの取得を処理する必要がありますか?

私たちのシステムでのステータスの使用について説明しましょう。ステータスを使用してエンティティを削除します。したがって、Userエンティティを削除する代わりに、そのステータスをDeletedに設定します。これで、ユーザーリポジトリはGetメソッドを公開します。パラメータを指定せずにGetを呼び出すと、ステータスに関係なく、システム内のすべてのユーザーが返されますが、アクティブユーザーのみを取得する場合は、サービスレイヤーまたはリポジトリレイヤーで処理するのが最適です。Serviceレイヤーでこれを行う場合は、RepositoryGetメソッドの応答にフィルターを設定する必要があります。リポジトリレイヤーで実行した場合、GetはStatus列挙型を取得するため、Get(Status.Active)を呼び出すことができます。このようなものを処理するための最良の方法は何でしょうか?

4

1 に答える 1

0

Get(id)を特定のエンティティの詳細の取得に制限してから、SearchCriteriaオブジェクトを受け入れて検索パラメーター(Statusなど)を定義するある種の検索/検索機能を実装することをお勧めします。フィルタを実行する場所についての質問に答えるには、クエリ実行用に最適化されているデータベースをお勧めします。

于 2012-11-29T16:11:40.903 に答える