Необработанная хранимая процедура в EF core 3 - PullRequest
3 голосов
/ 01 апреля 2020

Я новичок в ядре ASP. net и хочу создать веб-сайт MVC, который отображает данные учащихся и меняет их статус с внеклассного на новый, когда пользователь нажимает на статус изменения кнопка. Ниже приведены классы, таблица БД и SP.

Метод изменения статуса в контроллере:

public async Task<IActionResult> ChangeStatus(long? id)
    {
         if (id == null)
        {
            return NotFound();
        }

        var students = await _db.Students
            .FirstOrDefaultAsync(m => m.Id == id);
        if (students == null)
        {
            return NotFound();
        }
        var Id = new SqlParameter
        {
            ParameterName = "@Id",
            SqlDbType = System.Data.SqlDbType.BigInt,
            Direction = System.Data.ParameterDirection.Input,
            Value = student.Id
        };

        _db.Students.FromSqlInterpolated($" EXECUTE [dbo].[usp_changeStatus] @Id = {Id}").AsEnumerable().FirstOrDefault();
        await _db.SaveChangesAsync();
        return View(student);
    }

Класс модели:

 public class Student
    {
            [Key]
            public Int64 Id { get; set; }
            public string Name { get; set; }
            public string Address { get; set; }
            public string Age { get; set; }
    }

DBContext:

public DbSet<Student> Students{ get; set; }

В базе данных:

Таблица:

   CREATE TABLE [dbo].[Students](
    [Id] [bigint] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](100) NOT NULL,
    [Address] [nvarchar](100) NOT NULL,
    [Age] [nvarchar](100) NOT NULL);

StoredProcedure:

  Create PROCEDURE [dbo].[usp_changeStatus]
    @Id bigint
AS
BEGIN
    SET NOCOUNT ON;
    update [dbo].[Students] set [Status] = 'New'
    where Id = @Id;
END

Проблема: После нажатия кнопки изменения состояния запускается SP и статус изменен в таблице БД, но появляется ошибка на следующем рисунке:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...