没有存储库的3层,具有实体框架?

时间:2017-04-25 16:54:06

标签: .net entity-framework design-patterns

我决定放弃存储库,而是直接在我的服务中使用它们。但是,我现在不确定我的EF DbContext应该放在哪里以及应该从哪里调用 SaveChanges()。这是我目前的设计:

  • MVC客户端
    • 查看模型
  • 核心 BLL
    • 域名模型
    • 管理者
    • 服务 - 用于与第三方交谈和DAL
  • 数据 DAL
    • 实体模型
    • 的DbContext

服务应该在BLL中,还是应该在DAL中?

此外,欢迎您对上述建议进行任何改进,谢谢!

1 个答案:

答案 0 :(得分:0)

如果您不想使用存储库模式,如果在DAL中正确使用btw非常有效,那么您可以做的最好的事情如下:

1-从数据层中删除实体模型。将您的EF实体视为域模型。您的DAL将只包含DBContext。

2-考虑使用automapper轻松地将域模型转换为视图模型。必须在您的'经理'上进行转换,我通常将其命名为引擎。

3-只将DBContext注入管理器类。

所以流程将是MVC - >服务(管理人员注入) - >管理器(注入DBContext的地方) - > SQL Server。此外,始终考虑跨切割服务的服务,例如身份验证,授权,调用引擎,日志记录和业务规则验证。您的EF labmda表达式只能写在dbcontext可用的管理器类中。

相关问题