我决定放弃存储库,而是直接在我的服务中使用它们。但是,我现在不确定我的EF DbContext应该放在哪里以及应该从哪里调用 SaveChanges()。这是我目前的设计:
服务应该在BLL中,还是应该在DAL中?
此外,欢迎您对上述建议进行任何改进,谢谢!
答案 0 :(得分:0)
如果您不想使用存储库模式,如果在DAL中正确使用btw非常有效,那么您可以做的最好的事情如下:
1-从数据层中删除实体模型。将您的EF实体视为域模型。您的DAL将只包含DBContext。
2-考虑使用automapper轻松地将域模型转换为视图模型。必须在您的'经理'上进行转换,我通常将其命名为引擎。
3-只将DBContext注入管理器类。
所以流程将是MVC - >服务(管理人员注入) - >管理器(注入DBContext的地方) - > SQL Server。此外,始终考虑跨切割服务的服务,例如身份验证,授权,调用引擎,日志记录和业务规则验证。您的EF labmda表达式只能写在dbcontext可用的管理器类中。