馃敟 Articles, eBooks, Jobs, Columnist, Forum, Podcasts, Courses 馃帗



Executando Stored Procedure com EF

Veja como funciona

entity-framework

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

Image

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





Related articles




Top