我有一个 C# blazor 应用程序,它调用一个服务,而该服务又调用一个存储过程。当应用程序调用该服务时,一个 csv 字符串被传递给该服务,该服务应将参数值传递给存储过程。
然而,这似乎并没有发生。当我调试 C# 代码时,成功创建了 CSV 字符串,并且该字符串确实成功地传递给了服务。在 SSMS 中执行时,存储过程本身确实有效。似乎服务将 csv 字符串传递给存储过程的步骤似乎不起作用。
以下是: 调用服务的应用代码
public async Task SelectProcesses()
{
var SelectedData = await PRDSRVGrid.GetSelectedRecords();
foreach (var a in SelectedData) { IDValue.Add(a.PRODSERVID); }
string csvstring = (string.Join(",", IDValue.Select(x => x.ToString())));
SelectedProductsServices = csvstring;
processes = await SelectSpecificProcessesService.GetSpecificProcesses(@SelectedProductsServices);
return;
}
服务本身:
using Dapper;
using Microsoft.Data.SqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Threading.Tasks;
namespace ThePositionerBlazorServerDapperSyncfusion.Data
{
public class SelectSpecificProcessesService : ISelectSpecificProcessesService
{
private readonly SqlConnectionConfiguration _configuration;
public SelectSpecificProcessesService(SqlConnectionConfiguration configuration)
{
_configuration = configuration;
}
public async Task<IEnumerable<PROCESSES>> GetSpecificProcesses(string @SelectedProductsServices)
{
IEnumerable<PROCESSES> processes;
using (var conn = new SqlConnection(_configuration.Value))
{
var parameters = new DynamicParameters();
parameters.Add("(@SelectedProductsServices", SelectedProductsServices, DbType.String);
//await conn.ExecuteAsync("SelectSpecificProcesses", parameters, commandType: CommandType.StoredProcedure);
processes = await conn.QueryAsync<PROCESSES>("SelectSpecificProcesses", parameters, commandType: CommandType.StoredProcedure);
}
return processes;
}
}
}
和存储过程:
USE [WorkManagerV6]
GO
/****** Object: StoredProcedure [dbo].[SelectSpecificProcesses] Script Date: 4/24/2021 11:01:58 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SelectSpecificProcesses]
@SelectedProductsServices nvarchar(4000)
AS
SELECT PROCESSID, PROCESSDESC, LASTUPDATED
FROM PROCESSES
WHERE PROCESSID IN (
SELECT PROCESSID
FROM WORKHIER W
JOIN iter_charlist_to_tbl(@SelectedProductsServices, DEFAULT) s
ON w.PRODSERVID = s.nstr
)
RETURN
它抱怨未提供 @SelectedProductsServices
- SQL Server 错误。
任何建议都会有所帮助。提前致谢...
答案 0 :(得分:0)
这是斯图的回答
结果是 Stu 发现了这个问题——它是 parameter.add 语句中的额外括号——谢谢!