我决定放弃存储库,相反,我将直接在我的服务中使用它们。但是,我现在不确定我的EF dbContext应该坐在哪里以及应从 savechanges((从哪里调用。这是我目前的设计:
-
MVC客户端
- 查看模型
-
core bll
- 域模型
- 经理
- 服务 - 用于与第三方交谈和DAL
-
数据 dal
- 实体模型
- dbContext
服务应该坐在BLL中,还是应该在DAL中?
也欢迎您对上述建议的任何改进,谢谢!
如果您不想使用存储库模式,那么哪个是在dal中正确使用的,那么您可以做的最好的事情就是以下内容:
1-从数据层中删除实体模型。将您的EF实体视为域模型。您的DAL仅包含DBContext。
2-考虑使用AutoMapper轻松将域模型转换为视图模型。必须在我通常将其命名为引擎的"经理"上进行转换。
3-仅将您的dbcontext注入管理员类。
因此,流量将是MVC->服务(在其中注入管理人员( ->管理器(在其中注入DBContext的位置( -> SQL Server。此外,始终考虑用于交叉切割问题的服务,例如身份验证,授权,调用引擎,记录和业务规则验证。您的EF LabMDA表达式必须仅写在您可用的DBContext的经理类中。