【发布时间】:2015-11-17 00:57:48
【问题描述】:
我的代码如下所示:
int retval = databaseContext.Database.ExecuteSqlCommand(command, sqlParameters.ToArray());
databaseContext 的类型是 System.Data.Entity.DbContext
我想使用返回值来知道存储过程是否运行成功。基于the documentationExecuteSqlCommand应该返回存储过程的结果。
但是,无论我设置存储过程做什么,该命令总是返回 -1 到 retval。我尝试过返回各种整数,甚至在存储过程中调用 RAISERROR,但返回值始终为 -1。
这是我尝试过的两个存储过程,但它们都返回 -1 并且没有说明它是否成功运行:
CREATE PROCEDURE [dbo].[myproc]
AS
BEGIN
RAISERROR ('You fail', -- Message text.
0, -- Severity - operation failed.
500-- State.
);
END
GO
CREATE PROCEDURE [dbo].[myproc]
AS
BEGIN
RETURN 1
END
GO
知道我在这里做错了什么吗?
【问题讨论】:
-
@DavidG,不,这是一个不同的问题。该问题要求查询采用特定格式,而 ExecuteSqlCommand 文档似乎不需要任何此类内容
-
如果你想要返回值,你必须使用那个方法。
ExecuteSqlCommand不会为您执行此操作,除非可能有SELECTs 将值放入结果集中。 -
@DavidG,啊,我明白了。我已经看到了您链接的答案,但不了解其中的区别。如果您想发表您的评论作为答案,我会接受它
-
不值得为该评论发布答案。
标签: c# sql-server entity-framework stored-procedures azure-sql-database