我有以下存储过程,返回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();
当我传递所有三个参数时,这个工作正常。假设如果我只传递第一个参数,它会显示错误以传递剩余的两个参数。如何在实体框架中使用可选参数?
答案 0 :(得分:0)
你得到的错误是因为你错过了一个参数,还是因为你有一个包含3个项目的数组而且其中一些是空的?当我有一个带有可选参数的SP时,我只需添加我需要发送到列表的内容,然后在SP调用之前将列表转换为数组。
<html>
<head>
<style type="text/css">
.block1 {
color: red;
width: 100px;
border: 1px solid green;
}
.block2 {
color: blue;
width: 70px;
border: 2px solid black;
position: relative;
float: right;
}
</style>
</head>
<body>
<div class='block1'>
<div class='block2'>block2</div>
<p>text</p>
<p>text2</p>
</div>
</body>