Linq to sql LINQ to SQL在调用我的存储过程时使用CONVERT

Linq to sql LINQ to SQL在调用我的存储过程时使用CONVERT,linq-to-sql,stored-procedures,Linq To Sql,Stored Procedures,我有一个存储过程,我喜欢与LINQ to SQL一起使用。我把它添加到dbml中,很好地调用了它,但是奇怪的事情发生了。我得到的是“找不到列“MySchema”或用户定义函数或聚合“MySchema.pi_MyStoredProcedure”,或者名称不明确。”-错误。我试图弄清楚为什么会发生这种情况,因为我可以从SSMS很好地执行这个过程。SQL事件探查器成功捕获查询,结果如下: exec sp_executesql N'SELECT CONVERT(Int,[MySchema].[pi_My

我有一个存储过程,我喜欢与LINQ to SQL一起使用。我把它添加到dbml中,很好地调用了它,但是奇怪的事情发生了。我得到的是“找不到列“MySchema”或用户定义函数或聚合“MySchema.pi_MyStoredProcedure”,或者名称不明确。”-错误。我试图弄清楚为什么会发生这种情况,因为我可以从SSMS很好地执行这个过程。SQL事件探查器成功捕获查询,结果如下:

exec sp_executesql N'SELECT CONVERT(Int,[MySchema].[pi_MyStoredProcedure](@p0)) AS   [value]',N'@p0 nvarchar(4000)',@p0=N'ParameterValue'
<Function Name="MySchema.pi_MyStoredProcedure" Method="pi_MyStoredProcedure" IsComposable="true">
    <Parameter Name="MyParameter" Type="System.String" DbType="NVarChar(512)" />
    <Return Type="System.Int32" />
</Function>
当我尝试执行此操作时,我从SSMS收到相同的“找不到…”错误。我怀疑这可能与存储过程的返回类型有关。我必须手动在.dbmlxml代码中设置它。看起来是这样的:

exec sp_executesql N'SELECT CONVERT(Int,[MySchema].[pi_MyStoredProcedure](@p0)) AS   [value]',N'@p0 nvarchar(4000)',@p0=N'ParameterValue'
<Function Name="MySchema.pi_MyStoredProcedure" Method="pi_MyStoredProcedure" IsComposable="true">
    <Parameter Name="MyParameter" Type="System.String" DbType="NVarChar(512)" />
    <Return Type="System.Int32" />
</Function>


我做错了什么?我找到的每一个在线教程都告诉我要这样做,但很明显我还遗漏了一些东西?这是什么

我通过将存储过程更改为使用输出参数而不是返回来解决此问题。

我通过将存储过程更改为使用输出参数而不是返回来解决此问题