[英]Error trying to execute update stored procedure using entity framework core
我正在尝试在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值。 无论哪种方式,我还没有让它工作。
这是一种应该满足您要求的方法:
var parameters = new List<SqlParameter>
{
new SqlParameter("@PracticeId", assignmentsPracticeId),
new SqlParameter("@UserId", assignmentsUserId),
new SqlParameter("@AdmissionId", AdmissionId)
};
await _context.Database.ExecuteSqlCommandAsync(
"EXEC AdmissionConsultEndCurrentAndPending @PracticeId, @UserId, @AdmissionId",
parameters.ToArray());
根据评论,我发现问题是我直接传递了值,我需要传递一个参数,而不是int本身。 那么有用的是:
SqlParameter u = new SqlParameter("@UserId", assignments.UserId);
SqlParameter a = new SqlParameter("@AdmissionId", AdmissionId);
SqlParameter pr = new SqlParameter("@PracticeId", assignments.PracticeId);
await _context.Database.ExecuteSqlCommandAsync("EXEC AdmissionConsultEndCurrentAndPending @PracticeId, @UserId, @AdmissionId",
parameters: new[] { a, u, pr });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.