我正在攻读MS证书。我已经在测试中遇到了3个错误并在网上找到了确认
现在我没有找到一个明确的答案,所以我在这里发布。
这是问题:
您正在维护现有的MVC应用程序。用户报告在查询数据库以查找符合特定条件的产品列表时,某些产品不会出现在列表中。原始应用程序开发人员遵循常见的MVC结构约定。您需要找到导致问题的文件 你应该在哪个文件夹中查找文件?
可能的答案是:
我只想知道我是否感到困惑,或者问题/答案本身是否令人困惑。
答案 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以获得示例。