0

我有这个用 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。如果用户接受条款,那么用户接受的日期将与他们的 ID 一起存储在这个表中。因此,如果用户 ID 的日期字段为空,则表示他们没有接受条款和条件。

4

2 回答 2

1

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

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

你的模型或 ViewModel 也不应该有任何业务逻辑,它应该是一个 DTO。

于 2013-08-16T11:42:15.733 回答
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

于 2013-08-16T11:57:54.133 回答