C# 是否可以在Asp.net核心解决方案的单独层中管理DBContext的注入
我们的asp.net核心解决方案分为以下几层: Web UI项目(3种不同的Web应用程序) BLL 实体(模型和视图模型) DAL(数据库上下文,存储库)C# 是否可以在Asp.net核心解决方案的单独层中管理DBContext的注入,c#,asp.net,.net-core,n-tier-architecture,C#,Asp.net,.net Core,N Tier Architecture,我们的asp.net核心解决方案分为以下几层: Web UI项目(3种不同的Web应用程序) BLL 实体(模型和视图模型) DAL(数据库上下文,存储库) 所有Web UI都将利用BLL提供的服务,BLL反过来将引用DAL来与数据接口。通常,DBContext的服务在启动类中配置 有没有一种方法可以真正地将其分离开来,这样web ui项目在仍然使用DI时就不需要引用DAL(DBContext)?我了解到,要进行依赖注入,需要在web ui启动时将DBContext配置为作用域服务,但从逻辑上
所有Web UI都将利用BLL提供的服务,BLL反过来将引用DAL来与数据接口。通常,DBContext的服务在启动类中配置
有没有一种方法可以真正地将其分离开来,这样web ui项目在仍然使用DI时就不需要引用DAL(DBContext)?我了解到,要进行依赖注入,需要在web ui启动时将DBContext配置为作用域服务,但从逻辑上讲,ui需要引用DAL或与DAL有任何关系对我来说毫无意义。我建议使用以下层:
- 合同DLL(接口+实体)
- 实施(控制器操作)
您还可以编写C#或PowerShell实用程序来利用该服务。换句话说,网站不必是服务的唯一消费者。可以在没有依赖注入的情况下做到这一点(即在需要时创建一个新实例),但不会获得上下文池的好处。如果web项目引用DAL,这真的很重要吗?真正的问题是,您的类在项目之间的耦合度很低。可能不是,只是我很难接受我的Web UI需要引用这个概念,并且正在寻找任何可能的替代方案。自从我发表文章以来,我对DI和组合根有了更多的了解,我知道这必须在应用程序中进行管理。为了澄清,网站、服务和合同是同一VisualStudio解决方案中的三个独立项目。网站和服务在不同的端点上运行。