2013-12-16 35 views
0

我在过去四年中使用过asp.net网页表单。我正在尝试熟悉mvc4。如果你没有使用类似于实体框架的orm,你会在模型中加入sql代码吗?例如,如果您有一个名为person的域对象(模型类),那么您将拥有如下功能:person.select,person.update,person.delete。mvc4模型对象封装sql吗?

我很困惑,因为我认为mvc4是用户界面,所以它似乎不正确把模型中的sql语句。

我已经在这里约mvc4今天看了很多的问题,但我还没有找到一个明确的答案

+0

Your Model只是POCO类,所有的腿部工作都由控制器完成。控制器使用数据填充模型以在视图中使用。 – James

+0

我的意见是,编写sql代码的最佳位置是存储过程,并且您的控制器只需调用这些sp。 –

+0

@DanBracuk是和否如果你没有使用ORM,那么一定要使用存储过程。让控制器直接调用存储过程,可能并不是一个好习惯。某种数据层或存储库应该真的被使用 – James

回答

1

任何CRUD功能从控制器级别执行。您可能有一个数据访问层或存储库将这些数据抽象出来,但对这些功能的调用将是控制器级别。

如果数据需要传递给视图,那么将该数据放入视图模型中。然后将视图模型传递给视图以供使用。该视图只能访问该模型中的数据。当你想更新一些东西时,你可以回调控制器更新动作,然后控制器可以从那里处理它。

模型本身只是一个POCO (Plain Old CLR Object)它不会有任何方法。 @Html@Ajax帮助程序对于快速访问Controller操作非常有用。 Ajax人可以返回部分视图,这将有助于在屏幕上更新数据而无需回发。

有一个相当不错的MVC4(免费)视频教程,分成小段,所以你可以很容易地找到你需要的位。 Take a look at it here

+0

谢谢+1。说模型是一个域对象/数据传输对象是否公平? – w0051977

+0

最有可能有2种类型的模型。从业务逻辑和视图模型返回的域模型,它们只能在Controller和View之间使用。您可以将域模型传递给视图,但如果您的需求比单个实体或结果集更复杂,则需要将所有必需的数据传递到视图模型,然后将其发送到视图。 – James