Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# N层-依赖注入-网络核心_C#_Asp.net Core_Dependency Injection_Architecture_N Layer - Fatal编程技术网

C# N层-依赖注入-网络核心

C# N层-依赖注入-网络核心,c#,asp.net-core,dependency-injection,architecture,n-layer,C#,Asp.net Core,Dependency Injection,Architecture,N Layer,我正在ASP.NET核心中构建一个解决方案体系结构 我在ConfigureServices()中引用web项目中的存储库来声明依赖项注入,这样可以吗 我认为理想情况是只引用服务项目,因为控制器只应该使用服务,而不应该使用存储库 我有以下项目: Web应用程序(ASP.NET核心)-引用所有项目 public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.Add

我正在ASP.NET核心中构建一个解决方案体系结构

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

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

我有以下项目:

  • Web应用程序(ASP.NET核心)-引用所有项目

    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;
         }
    }
    
  • IRepository(类库-.NET标准)

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

    • 使用E.F.访问BD

      public class EventsSqlRepository : BaseRepository, IEventsRepository
      {
      }
      
  • Utils(类库-.NET标准)

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

    • 从BD E.F映射

  • 非常感谢

    您的解决方案看起来不错。注册应用程序依赖项的部分称为组合根,它是应用程序中所有依赖项都应该注册的唯一位置。即使它物理上位于应用程序的web项目部分,但从逻辑上讲,它是应用程序的独立部分。您可以在此处阅读更多信息:

    public class EventsSqlRepository : BaseRepository, IEventsRepository
    {
    }