Executando Stored Procedure com EF
Veja como funciona
Executando Stored Procedure com EF
Ol谩 pessoal, meu nome 茅 Mauricio Junior e hoje eu vou mostrar como executar via c贸digo C# como chamar uma simples stored procedure usando Entity Framework.
Problema: Eu tenho uma storage procedure enorme e que faz v谩rias coisas e eu preciso chamar ela pelo C# com o Visual Studio da Microsoft usando o framework da Microsoft chamado Entity Framework.
Depois de colocar o DbContext e informar a classe com Get e Set da tabela do database, da para chamar View ou Storage Procedure que retorna os dados de uma determinada tabela.
Vamos para o c贸digo
O c贸digo mostra a chamada e depois fiz um distinct.
public List<ClassItem> ExecuteTaskProcedure()
{
try
{
const string findDuplicateTaskStoredProcedure = "exec [dbo].[FindDuplicateTasks]";
var result = _db. ClassItem.FromSqlRaw<ClassItem>(findDuplicateTaskStoredProcedure).ToList();
//distinct by container
result = result.DistinctBy(x => x.Container).ToList();
return result;
}catch(Exception ex)
{
_logger.LogError("Method: {Name} - Exception: {ExMessage} - {Now}", MethodBase.GetCurrentMethod()!.Name, ex.Message, DateTime.Now);
throw;
}
}
C贸digo 1 - ExecuteTaskProcedure
Primeiro eu criei uma constante com o comando exec [dbo][FindDuplicateTasks]
para chamar na chamada do comando. C贸digo 2.
try
{
const string findDuplicateTaskStoredProcedure = "exec [dbo].[FindDuplicateTasks]";
...
...
}
C贸digo 2 - Definindo constante
Para executar a procedure 茅 necess谩rio execute o m茅todo FromSqlRaw passando o par芒metro, c贸digo 3.
try
{
const string findDuplicateTaskStoredProcedure = "exec [dbo].[FindDuplicateTasks]";
var result = _db. ClassItem
.FromSqlRaw<ClassItem>(findDuplicateTaskStoredProcedure)
.ToList();
...
...
}
C贸digo 3 - FromSqlRaw
Depois de definir a constante, 茅 necess谩rio utilizar o DbContext. Com o nome da classe 茅 necess谩rio chamar o m茅todo FromSqlRaw com o nome da constante que 茅 o comando "exec". O retorno dos dados 茅 armazenado na vari谩vel result e 茅 feito um Distinct por um campo e depois disso, retorna o valor.
try
{
const string findDuplicateTaskStoredProcedure = "exec [dbo].[FindDuplicateTasks]";
var result = _db. ClassItem
.FromSqlRaw<ClassItem>(findDuplicateTaskStoredProcedure).ToList();
//distinct by container
result = result.DistinctBy(x => x.Container).ToList();
return result;
}
C贸digo 4 - Distinct.
Com a vari谩vel e dados retornados do database utilizei o DistinctBy para cortar os dados repetidos e assim poder tratar da maneira que eu quiser.
Depois disso basta fazer o retorno dos dados.
Espero que tenha gostado e qualquer d煤vida pode entrar em contato comigo pelo site pessoal mauriciojunior.net ou pela plataforma ecode10.academy.
Curso de Web Application com Razor
https://ecode10.academy/curso/23/webapplication-com-razor
Subscribe ecode10.com
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.
You can cancel anytime.
Log In