Я использую Entity Framework для приложения, которое я написал с помощью ASP.NET MVC.Как выполнить хранимую процедуру и забыть об этом с помощью C# и Entity Framework?
Мне нужно иметь возможность вызвать хранимую процедуру и забыть об этом. Меня не волнует результат, который я просто хочу вызвать.
Я попытался это сделать, используя отдельное соединение для вызова хранимой процедуры с использованием метода ExecuteSqlCommandAsync
. Но хранимая процедура, похоже, не срабатывает.
Вот мой метод асинхронной
protected async Task ProcessRecords(DateTime loadedAt, string email)
{
try
{
using (var conn = new AppContext())
{
var result = conn.Database.ExecuteSqlCommandAsync("EXEC [DedecatedProcesses] @p0, @p1;", loadedAt, email);
await Task.WhenAll(result);
}
}
catch (Exception e)
{
// Do something with e.Message
}
}
Тогда из метода действия с в контроллере я называю это как так
var loaded = ProcessRecords(DateTime.UtcNow, model.Email);
Я не получаю ошибку, когда я запускаю мой код, но процедура не запускается.
Когда я выполняю хранимую процедуру с использованием SSMS, она работает без проблем.
Как я могу правильно вызвать хранимую процедуру и забыть об этом?
'EXEC' требуется только в том случае, если в заявлении имеется более одной строки, поэтому в коде нет необходимости. – Dalorzo
@Dalorzo Спасибо за удар. Но подскажите, как вызвать SP и забыть об этом? –
Сначала попробуйте запустить без инкапсулирующего асинхронного метода. и убедитесь, что вы правильно вызываете процедуру. Обычно я запускаю свои procs в Entity, добавляя его в модель, используя «функцию import» – DaniDev