【发布时间】:2017-09-06 12:49:19
【问题描述】:
我正在尝试仅使用一部分可选参数调用存储过程,但看起来我必须包含所有参数才能使 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;
【问题讨论】:
-
您能否添加一些示例代码来解释您已经尝试过的内容?
-
我不认为提供的链接对 EF6 有效。我认为是EF5及以下。
-
我遇到了同样的问题。我相信这是一个错误。如果您必须指定可选参数,则它违背了使用可选参数的目的,但如果它实际上是已知要求,则应该抛出异常而不是成功返回 0 结果,就好像查询已正确运行一样。
标签: c# entity-framework-6