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



我有一个存储过程,我们使用它来简单地将新记录插入到各种表中。此存储过程设置为不返回任何仅用于执行的内容。当我把它拉到我的DBML中时,它会把它设置为一个"虚空",我认为这是正确的。这是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不是有效的返回类型对于映射的存储过程"

我的问题是,对于那些故意不返回任何内容的SP,你能对存储过程使用linq吗?如果是这样的话,我在这个例子中做错了什么?

我不确定为什么在放入一个不返回任何内容的过程时,Linq会构建上面的void函数,因为它确实抛出了"不是有效的返回类型"错误。

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

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新