首页 > 解决方案 > 带有服务和存储库的 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();
    }
}

其余的由存储库来执行数据库调用。

现在为什么我需要在这里提供服务,因为没有其他东西可以抽象,它究竟会处理什么或抽象什么?

标签: c#asp.net-core

解决方案


您可能不需要服务,这完全取决于您的系统有多复杂。如果您的所有控制器方法都是通过一个对象和一个存储库调用完成的,那么我不会添加服务。

当控制器想要执行的操作变得太复杂而无法将它们保留在控制器中时,我会添加服务。例如,如果一个控制器方法更新多个对象并需要一些逻辑(有时这组对象会更新,有时会更新该组) - 我将该逻辑放在服务中。


推荐阅读