#c# #sql-server #entity-framework-6.2
#c# #sql-сервер #entity-framework-6.2
Вопрос:
Я читал, как использовать хранимые процедуры в EF6
Но это не показывает, как я могу фактически получить данные из процедуры в модель.
Например, у меня есть этот запрос
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());
}