我有一个我喜欢与 LINQ to SQL 一起使用的存储过程。我很好地将它添加到 dbml 并设法调用它,但随后发生了奇怪的事情。我收到“找不到列“MySchema”或用户定义的函数或聚合“MySchema.pi_MyStoredProcedure”,或者名称不明确。-错误。试图弄清楚为什么会发生这种情况,因为我可以从 SSMS 很好地执行 proc。SQL Profiler 设法捕获了查询,它是这样的:
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>
我在这里做错了什么?我设法找到的每个在线教程都告诉我这样做,但显然我还缺少其他东西?它是什么?