ASP.NET MVC在哪里编写查询逻辑

时间:2011-06-27 12:16:03

标签: asp.net asp.net-mvc

我正在攻读MS证书。我已经在测试中遇到了3个错误并在网上找到了确认 现在我没有找到一个明确的答案,所以我在这里发布。
这是问题:

  

您正在维护现有的MVC应用程序。用户报告在查询数据库以查找符合特定条件的产品列表时,某些产品不会出现在列表中。原始应用程序开发人员遵循常见的MVC结构约定。您需要找到导致问题的文件   你应该在哪个文件夹中查找文件?

可能的答案是:

  • 控制器
  • 模型
  • 浏览
  • 内容

我只想知道我是否感到困惑,或者问题/答案本身是否令人困惑。

8 个答案:

答案 0 :(得分:3)

控制器很可能是正确的答案

这是一个非常混乱的问题,因为它的答案在很大程度上取决于您正在使用的DAL策略/库。如果它说你正在使用EF那么答案显然是控制器,但是如果你要使用更多程序化的东西(即存储库)那么事情会变得更加混乱。

但是。当你使用存储库时,你可能会将它们放在一个单独的项目(程序集)中,所以它不会是任何列出的文件夹(如果我们讨论的是RAW查询)。

因此,对于存储库,您仍然可以认为数据提取/操作仍将在控制器中完成,即使它可能不是直接数据查询(SQL,eSQL或LINQ)而是调用存储库(甚至调用存储库的更好的服务)。

模型中有什么?

模型通常包含类。非常简单的(作为POCO和/或DTC)或者它们可能包含更多智能类(作为实体)。但无论如何,你不会在Models文件夹中的类中编写查询,而是在使用Models类的控制器中编写查询。无论是薄还是富。

答案 1 :(得分:2)

我会回答“控制器”,因为模型(无论如何)是视图需要的愚蠢数据才能呈现自己。但是,执行查询将在查询层中实现。

现在有些人认为模型是代表商业数据和数据访问的更高概念 - 我恰好不是其中之一:)

答案 2 :(得分:1)

我会说答案是模特文件夹。我不认为这令人困惑。模型将是您的数据模型的位置,并且最有可能处理与数据库的交互。如果没有别的,我认为答案在消除过程中是显而易见的。

答案 3 :(得分:1)

模型 - 定义数据访问服务/数据模型。与控制器相反,后者可以编排视图的UI逻辑,而视图又可以使用内容中的图片和样式。

答案 4 :(得分:1)

答案是模特。这就是/被称为您的数据访问层。控制器是业务逻辑,它协调传递到DAL和从DAL传递到表示层的数据(在MVC中这是视图)。正如我刚才所说,视图是表示层。内容通常包含图像和CSS文件。

此致

Huske

答案 5 :(得分:1)

它可以是Controller或Model,具体取决于调用查询的方式,但是如果你读了这个问题,它会给你答案,因为它强调使用mvc模式,这意味着所有的数据访问逻辑都是写在模型中,因此问题出在模型中。

答案 6 :(得分:1)

我认为答案应该是Models,但可能是Controllers,因为您需要检查这两个地方。 Controller中的代码应该调用Model,并说“请给我一份满足这些标准的产品列表”。

当然,Controller中的代码可能会向Model询问错误的内容!这就是我讨厌这样的考试问题的原因!

我和很多其他人倾向于将此代码(Model内容)放在域层(单独的项目)中,因为它是特定于业务的,这意味着即使您更改了前端它也不会改变从网上到winforms或其他什么。

答案 7 :(得分:0)

理想情况下,控制器应尽可能精益。所以除了小的,在我看来,不欢迎向控制器写查询。您可以查看The Repository Pattern以获得示例。

Repository Pattern