【发布时间】:2015-11-03 06:49:13
【问题描述】:
我有下面的存储过程,它返回 1000 行。
ALTER PROC [dbo].[PROC_Insights_offinvoice_taxmaster]
@PROC_TYPE VARCHAR(50),@SEARCHBY VARCHAR(50) = NULL , @SEARCHVALUE VARCHAR(250) = NULL
AS
BEGIN
DECLARE @SQLQUERY VARCHAR(MAX)
IF(@PROC_TYPE = 'DISPLAY')
BEGIN
SET @SQLQUERY = '
SELECT [taxUID],[taxCode],[formatUID],[formatName],[taxDescription],[classcode],[classDescription],[locationShortName],
[zoneUID],[zoneName],[taxValue],[taxPercentage],[createdBy],[createdDate],[modifiedBy],[modifiedDate],[fy_Year]
FROM [Insights].[dbo].[Insights_offinvoice_taxmaster]
WHERE 1 = 1 '
IF @SEARCHBY IS NOT NULL
BEGIN
SET @SQLQUERY = @SQLQUERY + 'AND '+ @SEARCHBY + ' like ' + '''' + '%' + @SEARCHVALUE + '%' + ''''
END
EXECUTE(@SQLQUERY)
END
END
我已经使用下面的方法调用了存储过程。
var context = new InsightsEntities();
var param = new SqlParameter[3];
param[0] = new SqlParameter { ParameterName = "@PROC_TYPE", Value = "DISPLAY" };
param[1] = new SqlParameter { ParameterName = "@SEARCHBY", Value = "TaxValue" };
param[2] = new SqlParameter { ParameterName = "@SEARCHVALUE", Value = "1000" };
IEnumerable<Insights_offinvoice_taxmaster> tbl = context.Database.SqlQuery<Insights_offinvoice_taxmaster>("exec PROC_Insights_offinvoice_taxmaster @PROC_TYPE, @SEARCHBY, @SEARCHVALUE", param).ToList();
当我传递所有三个参数时,这个工作正常。假设如果我只传递第一个参数,它会显示传递其余两个参数的错误。实体框架中如何使用可选参数?
【问题讨论】:
-
是的。我试过。但我不知道如何传递可选参数。它也有可选参数。在这种情况下如何通过?
-
我会说只是传递
NULL或空字符串并在您的存储过程中处理它们? -
前端有没有其他方法可以解决这个问题?
-
很遗憾,无法对此发表评论。我几乎没有 c# 经验。我总是在 SQL 端处理这些事情,而不是在前端。
标签: entity-framework linq asp.net-mvc-4 stored-procedures optional-parameters