编程语言
首页 > 编程语言> > c# – 是否可以在Asp.net核心解决方案的单独Layer中管理DBContext的注入

c# – 是否可以在Asp.net核心解决方案的单独Layer中管理DBContext的注入

作者:互联网

我们的asp.net核心解决方案分为以下几层:

Web UI项目(3种不同的Web应用程序)

BLL

实体(模型和视图模型)

DAL(DBContext,存储库)

所有Web UI都将利用BLL中的服务,然后BLL将引用DAL与数据进行交互.通常,在启动类中配置DBContext的服务.

有没有办法真正区分这个,以便web ui项目在使用DI时不需​​要引用DAL(DBContext)?我知道,为了发生依赖注入,DBContext需要在web ui启动时配置为作用域服务,但从逻辑上讲,UI对我来说没有任何意义,UI需要引用或与之有关DAL.

解决方法:

我建议使用这些图层:

> Web UI(具有验证属性的模型 – 数据格式,必需等)
>服务

>合同DLL(接口实体)
>实施(控制器动作)

>数据访问

在服务和Web UI之间共享合同DLL.在服务内部使用您喜欢的任何DAL / ORM.就个人而言,我更喜欢Dapper.

然后,使用Refit为您的JSON服务生成C#代理.通过网站的Startup类注入将代理转换到您的Web控制器.将大多数业务逻辑放在服务控制器中,并从网站控制器中调用它们.将网站控制器中的逻辑保持在最低限度.

通过这种设计,Web UI不了解数据访问层.如果您愿意,可以将其从Dapper切换到Entity Framework.重新安装JSON服务可以为您提供两端类型安全的C#代码(Web和服务)以及在需要时(例如,在Web浏览器中运行的AJAX代码中)编写原始HTTP帖子的灵活性.

您可以编写利用该服务的C#或PowerShell实用程序.换句话说,网站不一定是该服务的唯一消费者.

标签:c,asp-net,net-core,n-tier-architecture
来源: https://codeday.me/bug/20190710/1425765.html