尝试使用实体框架核心执行更新存储过程时出错

Jho*_*rra 3 c# sql-server stored-procedures entity-framework-core asp.net-core

我正在尝试在 ASP.Net Core 应用程序中运行以下命令。

await _context.Database.ExecuteSqlCommandAsync(
           "EXEC AdmissionConsultEndCurrentAndPending @PracticeId @UserId @AdmissionId", 
           parameters: new[] { AdmissionId, assignments.UserId, assignments.PracticeId });
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用这些组合的实际命令

EXEC AdmissionConsultEndCurrentAndPending @PracticeId, @UserId, @AdmissionId
AdmissionConsultEndCurrentAndPending, @PracticeId, @UserId, @AdmissionId
Run Code Online (Sandbox Code Playgroud)

传递的三个值是三个整数。如果重要的是存储过程

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
Run Code Online (Sandbox Code Playgroud)

当我运行它时,虽然我收到以下错误: No mapping to a relational type can be found for the CLR type 'Int32[]'.

我不确定这个错误是指我作为参数传递的 int 值,还是因为它是一个更新查询,它试图返回受影响的行数的 int 值。无论哪种方式,我都还没有让它工作。

STL*_*Dev 5

这是一种应该满足您要求的方法:

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());
Run Code Online (Sandbox Code Playgroud)