私は mvc4 Web サイトに汎用リポジトリと作業単位パターンを使用しています。
今、システムのユーザーを削除したいという状況があります。削除コードでは、他のテーブル (コメント、アクセス権など) のエントリをさらに削除する必要があります。
最も簡単な解決策は、UserRepository
継承するを作成しGenericRepository<User>
、delete メソッドを変更して、他のテーブルのデータを削除することです。しかしUserRepository
、それは、独自のリポジトリ クラスを持つ必要がある他のテーブルにアクセスすることを意味しますよね?
ビジネス ロジックとリポジトリの間にあるサービス レイヤーについて読みました。
ここでのベストプラクティスは何ですか?また、サービス層の実装はどのように見えますか?
UserRepository
また、サービス レイヤーを使用する場合や、汎用リポジトリのみを使用してサービス クラスでロジックを実行する必要がある場合など、カスタム実装リポジトリを使用する必要はありますか?
コード例:
class UserRepository
{
public void Delete(User entity)
{
var userComments = Context.UserComments.Get(comment => comment.UserId == entity.Id);
foreach (var comment in userComments)
{
Context.UserComments.Remove(comment);
}
//
// same for access rights here
//
Context.Users.Remove(entity);
}
}