Выходной параметр в хранимой процедуре с Entity Framework Core - PullRequest
0 голосов
/ 25 июня 2019

Привет, я знаю, что есть много вопросов, как и у меня. Я искал интернет для решения этой проблемы, но ни один из ответов, которые я нашел, не работает для меня.

Я хочу выполнить процедуру хранения «InsertPatient» с использованием Entity Framework Core, и я просто не могу понять, как объявить мое выходное значение.

Мой код в настоящее время выглядит так:

        var parameters = SqlUtils.GetInsertPatientSpParameters(patient);

        var demoDatabase = _databases.First();
        var context = _contextFactory.GetInstance<BookingContext>(demoDatabase);

        var strategy = context.Database.CreateExecutionStrategy();

        await strategy.ExecuteAsync(async () =>
        {
            using (var transaction = context.Database.BeginTransaction())
            {
                var result = await context.Database.ExecuteSqlCommandAsync("exec InsertPatient", parameters);            
                transaction.Commit();
            }
        });

Я знаю, что я не выбираю свое выходное значение в этом фрагменте, но я просто хочу, чтобы SP запускался без исключений, таких как «Вы должны объявить значение @PatientID» и т. Д.

У меня есть метод, который возвращает мои параметры, так как мне нужно установить много параметров (~ 70). Все значения, кажется, в порядке, за исключением моего выходного значения (единственное в SP). Вот как я устанавливаю свои параметры, я включил их все, так как DbNull просто много:

            new SqlParameter("@Locked",DBNull.Value),
            new SqlParameter("@County_ID",DBNull.Value),
            new SqlParameter("@Home_ID",DBNull.Value),
            new SqlParameter("@Section_ID",DBNull.Value),
            new SqlParameter("@ConsentToMarketing","0"),
            new SqlParameter("@PatientID", SqlDbType.Int, 50) {Direction = ParameterDirection.Output}  //This throws exception that @PatientID isnt declared

Текущая информация о SP, которую я имею, состоит в том, что она выглядит следующим образом (в сниппете я удалил много параметров):

declare @p1 int exec InsertPatient @PatientID=@p1 output, @SetCustomerNo=0, @CustomerNo=NULL,@RespEmployee_ID=@in_EmployeeId,@RespBusiness_ID=@in_BusinessId,

Модификация SP, к сожалению, не вариант.

Я пробовал несколько решений для установки @PatiendID, основываясь на информации, которую я нашел, читая другие посты, но независимо от того, как я ее установил, всегда выдается исключение, что «@PatientID не имеет значения и т. Д.». Я также пытался объявить @ p1, но безуспешно.

Если у кого-то есть идея о том, как правильно установить эту переменную, чтобы получить выходное значение, это было бы очень признательно.

Спасибо

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