Entity Framework 5 - Retornando objetos usando comandos SQL - II
Na primeira parte deste artigo vimos como executar comandos SQL contra uma fonte de dados em um projeto que usa o Entity Framework onde realizamos uma inclusão de no banco de dados.
Neste artigo veremos como podemos retornar objetos do nosso modelo usando comandos SQL.
Vamos usar o mesmo cenário montado para a primeira parte do artigo. Lembrando que estamos usando um banco de dados SQL Server chamado Cadastro.mdf e uma tabela Pagamentos conforme a estrutura abaixo:
Vamos usar o mesmo projeto criado no artigo anterior .
Abra o Visual Studio 2012 Express for desktop e abra o projeto EF_ExecutandoComandosSQL;
Vamos executar uma instrução SQL que retorna uma coleção de instâncias do tipo da entidade Pagamento.
Como vimos no artigo anterior o método ExecuteStoreCommand() é semelhante ao método ExecuteNonQuery e executa uma instrução SQL retornando o numero de linhas afetadas.
Para materializar os objetos a partir do nosso model podemos usar o comando ExecuteStoreQuery no contexto do objeto; assim vamos implementar a funcionalidade para executar uma instrução SQL e receber de volta uma coleção de instâncias do tipo da entidade Pagamento.
Vamos incluir no formulário form1.vb do projeto 2 novos botões de comando :
Defina no formulário form1.vb o seguinte leiaute usando os dois controles Buttons:
No evento Click do botão de comando - Adicionar Objetos - temos o código abaixo:
Private Sub btnAdicionarObjetos_Click(sender As Object, e As EventArgs) Handles btnAdicionarObjetos.Click Using context = New CadastroEntities() context.Pagamentos.Add(New Pagamento() With {.valor = 125D, .vendedor = "Microsoft"}) context.Pagamentos.Add(New Pagamento() With {.valor = 325D, .vendedor = "Apple"}) context.Pagamentos.Add(New Pagamento() With {.valor = 500D, .vendedor = "Microsoft"}) context.Pagamentos.Add(New Pagamento() With {.valor = 100D, .vendedor = "Motorola"}) context.SaveChanges() End Using End Sub |
Este código apenas cria uma instância do nosso contexto (CadastroEntities) e usando o método Add no DbSet inclui 4 novas entidades ao contexto. Dessa forma estamos incluindo as entidades com o estado Added significando que elas serão definitivamente inseridas no banco de dados quando o método SaveChanges() for chamado.
No evento Click do botão de comando - Retornar Objetos - inclua o código a seguir:
Private Sub btnRetornarObjetos_Click(sender As Object, e As EventArgs) Handles btnRetornarObjetos.Click Using context = New CadastroEntities() Dim sql As String = "select * from Pagamentos where vendedor = @Vendedor" Dim args = New DbParameter() {New SqlParameter() With {.ParameterName = "Vendedor", .Value = "Microsoft"}} Dim pagamentos = context.Database.SqlQuery(Of Pagamento)(sql, args) lsbResultado.Items.Add("Pagamentos incluídos...") For Each pag In pagamentos lsbResultado.Items.Add("Objetos retornados : " & pag.vendedor & " - " & pag.valor) Next End Using End Sub |
O código cria uma instância do nosso contexto e define uma instrução sql para retornar os vendedores usando o parâmetro definido como @Vendedor.
A seguir definimos o nome do parâmetro e o valor do mesmo como argumentos que serão usados pelo SqlQuery.
O método é SqlQuery no DbSet permite realizar uma consulta SQL para retornar instâncias de uma entidade. Os objetos retornados serão rastreados pelo contexto como se eles fossem devolvidos por consulta LINQ.
Podemos usar o método SqlQuery sem parâmetros : Dim teste = context.Pagamentos.SqlQuery("Select * from Pagamentos").ToList()
No exemplo estamos definindo o parâmetro @Vendedor e incluindo o seu nome valor na coleção DbParameter().
A seguir executamos o comando e retornamos os objetos incluídos que atendem ao critério da consulta SQL executada obtemos o seguinte resultado:
Nota: Nas versões anteriores o método ExecuteStoreQuery() atuava de forma similar a este método.
Segue o projeto completo aqui: EF_ExecutandoComandosSQL_2.zip
Mat 6:31
Portanto, não vos inquieteis, dizendo: Que havemos de comer? ou: Que havemos de beber? ou: Com que nos havemos de vestir?Mat 6:32
(Pois a todas estas coisas os gentios procuram.) Porque vosso Pai celestial sabe que precisais de tudo isso.Mat 6:33
Mas buscai primeiro o seu reino e a sua justiça, e todas estas coisas vos serão acrescentadas.Mat 6:34
Não vos inquieteis, pois, pelo dia de amanhã; porque o dia de amanhã cuidará de si mesmo. Basta a cada dia o seu mal.
Veja os
Destaques e novidades do SUPER DVD Visual Basic 2013
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Entity Framework - Conceitos Básicos - Uma visão ... - Macoratti.net
C# - CRUD básico com Entity Framework para ... - Macoratti.net
Entity Framework 4.1 - Primeiros Contatos - I - Macoratti.net