3

我在我的 Store 中添加了一个存储过程,它在我的模型中创建了一个函数导入,并且我将返回类型设置为 None,因为存储过程仅执行插入或更新。

然而,生成的 ObjectContext 方法返回一个 int,而不是 void。当我执行这个方法并且它工作时,这个值为-1。

这里发生了什么?

[编辑]

SPROC 很简单,如下所示:

SET NOCOUNT ON 
UPDATE Notes SET vchType = @Type, iPriority=5 WHERE iNoteNumber = @NoteID

什么都不应该返回,如果我执行一个变量,我认为它会为零,就像在 SSMS 中一样:

    DECLARE @return_value int

    EXEC    @return_value = [CNRD].[UpdateNoteType]
            @NoteID = 12345,
            @Type = N'REGULAR'

    SELECT  'Return Value' = @return_value
    ------------------------------------------
    [ Return Value ]
    0

这是它的映射方式:

SPROC 映射 函数导入 生成方法

4

1 回答 1

1

非查询方法,见备注:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx

对于 UPDATE、INSERT 和 DELETE 语句,返回值是受命令影响的行数。当正在插入或更新的表上存在触发器时,返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,则返回值也是 -1。

于 2013-05-21T06:16:47.923 回答