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

时间:2012-09-03 05:44:12

标签: linq-to-sql stored-procedures

我有一个存储过程,我喜欢使用LINQ to SQL。我把它添加到dbml就好了并设法调用它,但随后发生了奇怪的事情。我收到“无法找到任何列”MySchema“或用户定义的函数或聚合”MySchema.pi_MyStoredProcedure“,或者名称不明确。” -错误。试图弄清楚为什么会发生这种情况,因为我可以从SSMS执行proc。 SQL事件探查器设法捕获查询,它是这样的:

exec sp_executesql N'SELECT CONVERT(Int,[MySchema].[pi_MyStoredProcedure](@p0)) AS   [value]',N'@p0 nvarchar(4000)',@p0=N'ParameterValue'

当我尝试执行此操作时,我从SSMS获得相同的“无法找到...”错误。我怀疑这可能与我的存储过程的返回类型有关。我必须在.dbml XML代码中手动设置它。看起来像这样:

<Function Name="MySchema.pi_MyStoredProcedure" Method="pi_MyStoredProcedure" IsComposable="true">
    <Parameter Name="MyParameter" Type="System.String" DbType="NVarChar(512)" />
    <Return Type="System.Int32" />
</Function>

我在这里做错了什么?我设法找到的每个在线教程告诉我这样做,但显然我还缺少一些东西?它是什么?

1 个答案:

答案 0 :(得分:1)

我设法通过更改存储过程来使用OUTPUT参数而不是RETURN来解决此问题。