【发布时间】:2017-10-03 06:21:16
【问题描述】:
我正在尝试在 ASP.Net Core 应用程序中运行以下命令。
await _context.Database.ExecuteSqlCommandAsync(
"EXEC AdmissionConsultEndCurrentAndPending @PracticeId @UserId @AdmissionId",
parameters: new[] { AdmissionId, assignments.UserId, assignments.PracticeId });
我也尝试了这些组合的实际命令
EXEC AdmissionConsultEndCurrentAndPending @PracticeId, @UserId, @AdmissionId
AdmissionConsultEndCurrentAndPending, @PracticeId, @UserId, @AdmissionId
传递的三个值是三个整数。如果这里重要的是存储过程
ALTER PROCEDURE [dbo].[AdmissionConsultEndCurrentAndPending]
@AdmissionId INT,
@UserId INT,
@PracticeId INT
AS
BEGIN
SET NOCOUNT ON;
UPDATE
AdmissionConsults
SET
CurrentConsult = 0
WHERE
AdmissionId = @AdmissionId AND
PracticeId = @PracticeId AND
CurrentConsult = 1
END
当我运行此程序时,我收到以下错误:No mapping to a relational type can be found for the CLR type 'Int32[]'.
我不确定这个错误是指我作为参数传递的 int 值,还是因为它是一个更新查询,它试图返回受影响行数的 int 值。不管怎样,我还没有让它工作。
【问题讨论】:
-
是否需要逗号分隔Params?
-
我最初拥有它们,然后将它们拿出来尝试模仿在 SQL 中运行它的方式。
-
我会尝试几种组合。
-
你确定
AdmissionId, assignments.UserId, assignments.PracticeId都是int吗?从错误来看,其中之一是整数数组int[] -
您正在使用三个参数值创建 int 数组并将其作为单个参数传递,而不是传递单个 int 参数。这就是错误消息的原因。
标签: c# sql-server stored-procedures asp.net-core entity-framework-core