c# - 带有服务和存储库的 Razor 页面
问题描述
我试图了解如何在我的应用程序中分离关注点,并且我之前使用过存储库模式,
问题是我不明白服务的来源。
假设我有一个简单的 CreateModel
public class CreateModel : PageModel
{
private readonly IGenericRepository _genereicRepository;
public CreateModel(IGenericRepository genericRepository)
{
_genereicRepository = genericRepository;
}
[BindProperty]
public Entity Entity { get;set; }
public void OnGet()
{
var entities = _genericRepository.GetEntities();
}
public void OnPost()
{
_genereicRepository.AddEntity(Entity);
_genereicRepository.SaveChanges();
}
}
其余的由存储库来执行数据库调用。
现在为什么我需要在这里提供服务,因为没有其他东西可以抽象,它究竟会处理什么或抽象什么?
解决方案
您可能不需要服务,这完全取决于您的系统有多复杂。如果您的所有控制器方法都是通过一个对象和一个存储库调用完成的,那么我不会添加服务。
当控制器想要执行的操作变得太复杂而无法将它们保留在控制器中时,我会添加服务。例如,如果一个控制器方法更新多个对象并需要一些逻辑(有时这组对象会更新,有时会更新该组) - 我将该逻辑放在服务中。
推荐阅读
- python - 仅使用 numpy,有没有办法创建方波?
- javascript - 从 Wordpress REST API 获取图像(网络托管)
- gitlab-ci - gitlab-ci:有没有办法可视化或模拟不同分支/标签名称的管道?
- flutter - 颤振的 OpenStreetMap
- laravel - 在编辑表单中显示多行数据 Laravel
- ansible - Ansible podman 部署
- python - 如何在 django 的 loginView 表单中创建“记住我”复选框?
- react-native - react Native中具有不同高度和宽度的网格视图
- javascript - 具有事件委托的多个元素上的 JavaScript addEventListener
- axios - 如何在 Axios 的标头中设置“Content-Type”?