Выполнить процедуру и наполнить модель

В общем, у меня есть процедура, которая возвращает табличные данные и есть EF Context.

Я могу как-то сделать exec этой процедуры с параметрами и попросить EF замапить их на модель, которой нету в контексте?

Или я обязательно должен добавить модель в контекст, а потом извлеч exec?

Или как-то вообще можно сделать красивее?


Ответы (2 шт):

Автор решения: funforlifefix

Вы можете выгружать нужные данные в созданную модель и не обязательно, что бы она была добавлена в контексте. Примере: (асинхронный вызов можете заменить на синхронный)

public class Model
{
   public int Id { get; set; }
   public string Data { get; set; }
}

var result = await context.Entity.FromSqlRaw(“select Id, Data from Entity”).ToListAsync();

Либо

var result = context.Entity
    .FromSqlRaw("EXECUTE dbo.MyEntityProcedure")
    .ToList();
→ Ссылка
Автор решения: iluxa1810

В общем, нашел решение:

  1. Регистрируем нашу модель в контексте, как builder.HasNoKey();, но поле в самом контексте не создаем.
  2. Там где хотим наполнить нашу модель юзаем:

    var result = context.Set<ProcTable>().
    FromSqlInterpolated($"exec dbo.Proc {Param1},{Param2}");
    
→ Ссылка