Выполнить процедуру и наполнить модель
В общем, у меня есть процедура, которая возвращает табличные данные и есть 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
→ Ссылка
В общем, нашел решение:
- Регистрируем нашу модель в контексте, как
builder.HasNoKey();, но поле в самом контексте не создаем. Там где хотим наполнить нашу модель юзаем:
var result = context.Set<ProcTable>(). FromSqlInterpolated($"exec dbo.Proc {Param1},{Param2}");