Получение данных из хранимой процедуры для моделирования EF6 MVC

#c# #sql-server #entity-framework-6.2

#c# #sql-сервер #entity-framework-6.2

Вопрос:

Я читал, как использовать хранимые процедуры в EF6

https://www.entityframeworktutorial.net/entityframework6/code-first-insert-update-delete-stored-procedure-mapping.aspx

Но это не показывает, как я могу фактически получить данные из процедуры в модель.

Например, у меня есть этот запрос

 CREATE PROCEDURE Abastecimentos_Select 

AS
BEGIN
    SELECT * FROM OpenQuery(MACPAC, 'SELECT RD6001 as Referencia, RD6002 as UAP, RD6030 as QTD_AB_PDP_W01 FROM D805DATPOR.TRP060D WHERE RD6001 not like ''%OP%'' and RD6001 not like ''%PT%'' ')
END
  

Я хочу заполнить свою модель с ее помощью, свойства — это таблицы, возвращаемые из процедуры

 public class Abastecimentos
{
    public string Referencia { get; set; }
    public string UAP { get; set; }
    public float QTD_AB_PDP_W01 { get; set; }
}
  

Я пытался использовать Fluent API, но нет опции выбора

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Abastecimentos>().MapToStoredProcedures(a => a.//No select)
}
  

Я использую подход Code First.

Комментарии:

1. Если вы хотите получить свои данные из хранимой процедуры: var yourList = this.Database.SqlQuery<Abastecimentos>($"EXEC Abastecimentos_Select").ToList();

2. Это уже модель. Увидимся со ссылкой ModelBuilder. Сущность<Студент>() Таким образом, результаты хранимой процедуры — это IEnumerable Student .

3. Вы решили эту проблему?

4. Да, я решил использовать Dapper при попытке сопоставить хранимые процедуры

Ответ №1:

Я решил использовать Dapper при сопоставлении SP с моделями

общедоступная асинхронная задача OnGetListAsync() { IDbConnection con = new SqlConnection(_config.GetConnectionString(«DefaultConnection»));

     var query = await con.QueryAsync<ConsumoViewModel>("GetConsumoCalculado", commandType: CommandType.StoredProcedure);

    return new JsonResult(query.ToList());
}