我正在为我的 mvc4 网站使用通用存储库和工作单元模式。
现在我有一种情况,我想删除我系统的用户。在删除代码中,我必须删除其他表中的更多条目(评论、访问权限、..)。
最简单的解决方案是创建一个UserRepository
继承自GenericRepository<User>
并修改删除方法以删除其他表中的数据。但这意味着我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);
}
}