首页 > 解决方案 > N 层 - 依赖注入 - Net Core

问题描述

我正在 ASP.NET Core 中构建解决方案架构。

我在 web 项目中引用存储库来声明依赖注入,ConfigureServices()你可以吗?

我认为理想的情况是只引用服务项目,因为控制器应该只使用服务而不是存储库。

我有这些项目:

  1. Web App (ASP.NET Core) - 引用所有项目。

    public void ConfigureServices(IServiceCollection services)
    {
         services.AddMvc();
         services.AddTransient<IEventsService, EventsService>();
         services.AddTransient<IEventsRepository, EventsSqlRepository>();
    }
    
    public class EventsController : Controller
    {
         private readonly IEventsService _eventsService;
    
         public EventsController(IEventsService eventsService)
         {
              _eventsService = eventsService;
         }
    }
    
  2. 业务(类库 - .NET 标准)

    Folder IServices 
         IEventsService
    
    Folder Services
    
    public class EventsService : IEventsService
    {
        private readonly IEventsRepository _eventsRepository;
    
        public EventsService(IEventsRepository eventsRepository)
        {
             _eventsRepository = eventsRepository;
        }
    }  
    
  3. IRepository(类库 - .NET 标准)

    • IEvents存储库
  4. 存储库(类库 - .NET 标准)

    • 使用 EF 访问 BD

      public class EventsSqlRepository : BaseRepository, IEventsRepository
      {
      }
      
  5. 实用程序(类库 - .NET 标准)

  6. 实体(类库 - .NET 标准)

    • 从 BD EF 映射

非常感谢 !

标签: c#asp.net-coredependency-injectionarchitecturen-layer

解决方案


您的解决方案看起来不错。注册应用程序依赖项的部分称为组合根,它是应用程序中唯一应注册所有依赖项的地方。即使它物理上放置在应用程序的 Web 项目部分中,它在逻辑上也是应用程序的独立部分。你可以在这里阅读更多关于它的信息:http: //blog.ploeh.dk/2011/07/28/CompositionRoot/


推荐阅读