Я думаю, что это в основном повтор вопроса, на который здесь дан ответ:
Получить значение выходного параметра хранимой процедуры с использованием EF Core?
Использование верхнего ответа там мне помогли, хотя я признаю, что это был EF Core 2. что-то. Возможно, потребуется настроить для 3.x, предполагая, что это то, что вы используете.
Примечание: для указанного c случая, который вы перечислили здесь (возвращая один столбец int в одной строке), я создал мой собственный метод расширения примерно такой:
public static class RDFacadeExtensions
{
public static async Task<int> ExecuteScalarQueryAsync(this DatabaseFacade databaseFacade, string sql, params object[] parameters)
{
var concurrencyDetector = databaseFacade
.GetService<IConcurrencyDetector>();
using (concurrencyDetector.EnterCriticalSection())
{
var rawSqlCommand = databaseFacade
.GetService<IRawSqlCommandBuilder>()
.Build(sql, parameters);
var result = await rawSqlCommand
.RelationalCommand
.ExecuteScalarAsync(
databaseFacade.GetService<IRelationalConnection>(),
parameterValues: rawSqlCommand.ParameterValues);
return (int)result;
}
}
}
Затем вы сможете просто позвонить:
int result = Context.Database.ExecuteScalarQueryAsync("exec procedure...");
Для использования ...
(предостережение: не проверено в таком виде прятались дома какое-то время, поэтому тоже немного ржавые)