Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF 6使用Database.SqlQuery调用存储过程时忽略可选参数_C#_Entity Framework 6 - Fatal编程技术网

C# EF 6使用Database.SqlQuery调用存储过程时忽略可选参数

C# EF 6使用Database.SqlQuery调用存储过程时忽略可选参数,c#,entity-framework-6,C#,Entity Framework 6,我试图用一部分可选参数调用一个存储过程,但看起来必须包含所有参数才能使Database.SqlQuery正常工作。是这种情况,还是有一个解决方法,我只需要传递我关心的参数 我基本上是在尝试执行以下操作,其中存储过程有许多输入参数,其中一些是可选的。我希望能够调用该过程,并且只传递需要传递的参数 CREATE PROCEDURE [dbo].[SP_MySP] @One INT, @Two INT = NULL, @Three INT, @Four INT =

我试图用一部分可选参数调用一个存储过程,但看起来必须包含所有参数才能使Database.SqlQuery正常工作。是这种情况,还是有一个解决方法,我只需要传递我关心的参数

我基本上是在尝试执行以下操作,其中存储过程有许多输入参数,其中一些是可选的。我希望能够调用该过程,并且只传递需要传递的参数

CREATE PROCEDURE [dbo].[SP_MySP] 
    @One INT, 
    @Two INT = NULL,
    @Three INT,
    @Four INT = NULL ...

var paramOne = new SqlParameter("@One", firstValue);
var paramThree = new SqlParameter("@Three", thirdValue);
var paramFour = new SqlParameter("@Four", fourthValue);

var result = DataContext.Database.SqlQuery<MySPEntity>("EXEC SP_MySP @One,  @Three, @Four"
, paramOne, paramThree, paraFour).ToList();

return result;
创建过程[dbo].[SP_MySP]
@一整型,
@两个INT=NULL,
@三整型,
@四整数=零。。。
var paramOne=新的SqlParameter(“@One”,firstValue);
var paramThree=新的SqlParameter(“@Three”,第三个值);
var paramFour=新的SqlParameter(“@Four”,第四个值);
var result=DataContext.Database.SqlQuery(“EXEC SP_MySP@One、@Three、@Four”
,paramOne,paramtree,paraFour);
返回结果;

您能否添加一些示例代码来解释您已经尝试过的内容?我不认为提供的链接对EF6有效。我想是EF5及以下。我遇到了同样的问题。我相信这是一只虫子。如果必须指定可选参数,则无法达到使用这些参数的目的,但如果这实际上是一个已知的要求,则应该引发异常,而不是像正确运行查询一样成功返回0结果。