我想帮助在存储过程下面调用我的MVC模型

时间:2013-08-16 11:34:07

标签: sql-server asp.net-mvc

我有用SQL Server编写的这个存储过程。

USE [AppMarketplace]
GO


SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[uspTerms] 
@ID int

AS
BEGIN
SET NOCOUNT ON;

if(exists(select * from AppmarketApp where ID= @ID)) -- checking whether user exists in main user table

BEGIN
 if(exists(select * from AppTerms where ID = @ID)) -- if exists in the main table then check in terms table for accepting condition

BEGIN
return 1; -- if user has accepeted terms and condition
End

else
Begin
return 0; --if user not accepetd terms and codition
end
end

begin 
return -1; --if user doesnt exists in AppmarketApp table
end
end

GO

现在我必须在我的MVC模型中调用它。我正在使用EF数据库第一种方法。我的第一个问题是

1)我是否需要在模型或控制器中调用SP?解释     代码会更好。

2)而且我也在寻找这种情况的代码:我需要写     检查用户是否接受条款和条件的逻辑。如果用户     不接受条款然后我应该显示条款和条件页面     并迫使他们接受。它是如何工作的首先我会检查     我的Appterms表。在这个表中我有两个名为ID和的字段     Date.If用户接受条款,然后用户接受的日期     使用其ID存储在此表中。因此,如果datefield为空     userID意味着他们没有加入条款和条件..

2 个答案:

答案 0 :(得分:1)

  

1)我是否需要在模型或控制器中调用SP?用代码解释会更好。

两者都没有,您的存储过程调用应该在业务逻辑层中。控制器实际上是一个表示层,应该只处理获取数据并将其传递到您的视图。

您的模型或ViewModel也不应该包含任何业务逻辑,它应该是DTO。

答案 1 :(得分:0)

asp.net网站上有一些详细的教程。您没有提到您用于数据库连接的方法,因此如果您使用的是ADO.Net模型,请阅读以下内容:

http://www.asp.net/web-forms/tutorials/getting-started-with-ef/the-entity-framework-and-aspnet-getting-started-part-7

如果您使用Code First,则必须手动调用SP:

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/advanced-entity-framework-scenarios-for-an-mvc-web-application