3层没有存储库,带有实体框架



我决定放弃存储库,相反,我将直接在我的服务中使用它们。但是,我现在不确定我的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的经理类中。

最新更新