存储过程不会也不应该返回任何错误结果

时间:2011-06-02 19:15:00

标签: linq stored-procedures

我有一个存储过程,我们用它来简单地将新记录插入到各种表中。此存储过程设置为不返回任何仅执行。当我将它拉入我的DBML时,它将其设置为“Void”,我认为这是正确的。这是来自DMBL的自动生成代码。

[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.sp_PTS_Action_Insert_Comment")]
        public void sp_PTS_Action_Insert_Comment([global::System.Data.Linq.Mapping.ParameterAttribute(Name="Form_Name", DbType="VarChar(20)")] string form_Name, [global::System.Data.Linq.Mapping.ParameterAttribute(Name="Form_Number", DbType="VarChar(25)")] string form_Number, [global::System.Data.Linq.Mapping.ParameterAttribute(Name="UID", DbType="VarChar(15)")] string uID, [global::System.Data.Linq.Mapping.ParameterAttribute(Name="Cmt", DbType="VarChar(200)")] string cmt)
        {
            this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), form_Name, form_Number, uID, cmt);
        }
    }

我将此SP称为如下:

_context.sp_PTS_Action_Insert_Comment(formInformation["formType"], formInformation["formNumber"], userId, comment);

执行此代码时,会抛出错误

  

“System Void不是有效的返回类型   对于映射的存储过程“

我的问题是你可以使用linq来存储SP的程序,故意不返回任何内容吗?如果是这样,我在这个例子中做错了什么?

1 个答案:

答案 0 :(得分:1)

我不确定为什么在放置一个不返回任何内容的过程时,Linq会构建上面的void函数,因为它会抛出'not a valid return type'错误。

为了解决这个问题,我已经使用SCOPE_IDENTITY()作为我的返回添加了一个返回过程,所以我也可以在我的代码中使用它。

希望有所帮助。