Привет, я знаю, что есть много вопросов, как и у меня. Я искал интернет для решения этой проблемы, но ни один из ответов, которые я нашел, не работает для меня.
Я хочу выполнить процедуру хранения «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, но безуспешно.
Если у кого-то есть идея о том, как правильно установить эту переменную, чтобы получить выходное значение, это было бы очень признательно.
Спасибо