繁体   English   中英

C#MVC体系结构,我应该从MODEL还是CONTROLLER调用存储过程

[英]C# MVC architecture, should I call stored procedures from MODEL or CONTROLLER

我正在学习有关Model View Controller体系结构的一些知识,因为我想在我的项目中实现它,据我所知,它是这样的:

M-模型,是我向数据库添加连接的项目的一部分(例如LINQ TO SQL类或ADO.NET实体)

V-视图,这是项目的一部分,如果我们谈论的是C#Windows窗体应用程序,我将保留窗体

C-控制器,这是项目的一部分,我在其中编写用于从表单检索数据并将数据插入数据库的方法,例如:如果我想从数据库中选择所有客户,我将做下一步:

public class CustomerController
{
   public static List<Customers> GetActiveCustomers()
   {
      return DataServices.DB.proc_SelectAllActiveCustomers().ToList();
   }
}

因此,在上面的代码中,在我的控制器中,我正在调用称为proc_SelectAllActiveCustomers存储过程,如果我从某些表单中调用它,它将用所有活动客户填充我的表单。

那么,这是正确的吗? 或者我应该以某种方式从Model调用存储过程,或者实际上就是这样,因为DataServices.cs位于Model中并且用于打开与数据库的连接?

我对此感到困惑。

谁能解释我对吗?

谢谢大家,加油!

理想情况下,您的模型绝对不做任何事情。 控制器应该将其传递给视图以进行渲染,仅此而已。 如果需要使用存储过程,则可以在控制器中进行。

控制器是完成所有数据功能和其他逻辑的地方。 Controller不应直接连接到数据库,而应将数据库上下文注入其中。 然后它将请求所需的数据实体来填充模型。

该模型必须具有功能逻辑。 它被认为是哑对象或DTO(数据传输对象)。 根据您使用的技术,它可能包含属性属性,这些属性可以在传递给View进行验证和格式化时使用。

视图用于显示传递给它的模型并接收任何需要的输入。 根据将适当的数据放入模型中所需的条件,视图应具有有限的逻辑或功能,这些数据可以返回给控制器进行处理。

希望这可以帮助。 让我知道。

“模型”仅负责在“视图”和“控制器”之间传输数据,尽管有时它具有一些业务逻辑(坏习惯,它必须是一个完全没有头脑的对象),但它不应对业务层或数据有任何依赖性访问层。

必须从控制器中调用获取的数据,并通过调用某种类型的存储库或服务等来调用它。

ps为了避免服务/存储库的多个实例化,可以使用“依赖注入”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM