Спасибо Евгению за то, что поставил меня на правильный путь. В случае, если кто-то сталкивается с этой же проблемой:
Чтобы успешно получить выходной параметр в 3.0, вы должны специально определить выходной параметр как SqlParameter (), а затем включить слово «OUT» после ваша переменная.
Это пример использования ExecuteSqlInterpolated ()
var output = new SqlParameter();
output.ParameterName = "@ID";
output.SqlDbType = SqlDbType.Int;
output.Direction = ParameterDirection.Output;
await _context.Database.ExecuteSqlInterpolated(
"EXEC dbo.InsertTest @param1={"test"},@param2={"test2"}, @param3={output} OUT);
Это пример использования ExecuteSqlRawAsyn c ()
var output = new SqlParameter();
output.ParameterName = "@ID";
output.SqlDbType = SqlDbType.Int;
output.Direction = ParameterDirection.Output;
await _context.Database.ExecuteSqlRawAsync(
"EXEC dbo.InsertTest @param1={0},@param2={1}, @param3={3} OUT, param1,param2,output);