我有用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意味着他们没有加入条款和条件..
答案 0 :(得分:1)
1)我是否需要在模型或控制器中调用SP?用代码解释会更好。
两者都没有,您的存储过程调用应该在业务逻辑层中。控制器实际上是一个表示层,应该只处理获取数据并将其传递到您的视图。
您的模型或ViewModel也不应该包含任何业务逻辑,它应该是DTO。
答案 1 :(得分:0)
asp.net网站上有一些详细的教程。您没有提到您用于数据库连接的方法,因此如果您使用的是ADO.Net模型,请阅读以下内容:
如果您使用Code First,则必须手动调用SP: