Хранимая процедура EF Core с ошибкой 2 параметров System.InvalidOperationException: - PullRequest
0 голосов
/ 03 августа 2020

Я перехожу на EF Core и пытаюсь вызвать хранимую процедуру с двумя параметрами.

Текущая настройка для 1 параметра работает нормально.

Вот ошибка, которую я вижу:

System.InvalidOperationException: FromSqlRaw или FromSqlInterpolated были вызваны с некомпостируемым SQL и с запросом, составляющим его. Рассмотрите возможность вызова AsEnumerable после метода FromSqlRaw или FromSqlInterpolated для выполнения композиции на стороне клиента. at

Вот мой вызов репозитория:

public IQueryable<PartsGridDTO> GetPartsGridQueryable(int partId, int groupId)
{
    return MoreContext.SpPartsGridDetailYourCases
                      .FromSqlRaw($"EXECUTE dbo.GetProductsByPartAndGroup {partId}, {groupId}")
                      .Select(s => new PartsGridDTO
                                   {
                                       PartId = partId,
                                       //....
                                   }).AsQueryable();
}

Я пробовал несколько исправлений отсюда:

Включить с FromSqlRaw и хранимой процедурой в EF Core 3.1

, но ничего из этого не работает.

Я возвращаю AsQueryable() до контроллера, а затем вызываю .ToListAsync().

Я пытался добавить .IgnoreQueryFilters(); прямо перед .AsQueryable(), но я все еще вижу ошибку.

Есть мысли? Я неправильно передаю параметры? Это проблема EF Core или?

1 Ответ

0 голосов
/ 03 августа 2020

Было 3 элемента, пока я не решил проблему:

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

  2. (дополнительная проблема) Мне также нужно было вернуть только те элементы, которые должна отображать сетка. Это означает, что сетка может отображать только 5 из 8 значений, возвращаемых хранимой процедурой. Наличие этих дополнительных столбцов в возвращаемых элементах хранимой процедуры вызвало эту ошибку позже: InvalidOperationException: обязательный столбец «Адрес» не присутствовал в результатах операции «От Sql»

  3. Вот окончательный вид моего сохраненного кода pro c:

         return Context.EntityExample.FromSqlRaw($"dbo.GetProductsByPartAndGroup {partId}, {groupId}")
...