【问题标题】:MVC Repository pattern correct business logic locationMVC 存储库模式正确的业务逻辑位置
【发布时间】:2014-01-10 21:13:02
【问题描述】:

我正在使用 MVC4、EF5、存储库模式和 Unity IoC。 逻辑代码块应该放在哪里?

  • 在特定模型的存储库中
  • 控制器
  • 还是通过扩展模型的部分类?作为静态函数?

在我的应用程序中,每个控制器都拥有一个工作单元的实例。如果逻辑将保存在其中一个存储库或部分类中,因此需要将工作单元作为参数发送。您会推荐什么作为最佳做法?

谢谢:)

【问题讨论】:

  • “逻辑”是什么意思?商业逻辑?存储库应注入适当的工作单元。
  • 我有一个复杂的业务逻辑,我想在我的应用程序中编写代码。在我看来,控制器不是适合它的地方,因为我不希望它充满逻辑。既不在存储库本身内部。另一方面,如果我使用部分类(使用静态函数),我将不得不发送工作单元的引用..
  • 我会把它放在命令处理程序中。我们的控制器将所有逻辑传递给 CommandHandler,它们和业务实体包含所有业务逻辑。基本上遵循与本文类似的内容cuttingedge.it/blogs/steven/pivot/entry.php?id=91。我们的控制器对存储库或工作单元一无所知,因为它们都被注入到命令处理程序中

标签: asp.net-mvc-4 repository-pattern unit-of-work


【解决方案1】:

正如 GraemeMiller 强调的那样,控制器应该没有业务逻辑。我认为存储库在业务逻辑方面也应该相当轻松。 Dino Esposito 向 GraemeMiller 推荐了一个类似的模式,因为控制器将视图模型交给某种协调器,该协调器使用各种其他类来完成其工作,生成修改后的视图模型或根据需要重定向到另一个控制器。您的协调员可能依赖于一个工作单元,或者它可能自己建立一个工作单元。我倾向于前者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-29
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 2013-07-05
    • 1970-01-01
    相关资源
    最近更新 更多