Dev (Back & Front)ARTIGO

C# – Usando LINQ to SQL (o retorno)

Este artigo mostra como
usar os recursos do LINQ to SQLSQL64 conteúdosSQL Server – Como evitar SQL Injection?Data · mai 2019Azure SQL DB Managed InstanceData · abr 2019SQL Server – Como evitar SQL Injection? Pare de utilizar Query Dinâmica como EXEC(@Query)Data · abr 2019Ver tudo em Data em uma aplicação Windows Forms.
Ele foi baseado no artigo de autoria de Scott Lysle.

Embora o Entity
Framework tenha chegado para praticamente substituir o LINQ to
SQL com muitas vantagens, o LINQ to SQL ainda pode ser considerado
com uma alternativa viável para agilizar o desenvolvimento de
aplicações com acesso a dados.

O objetivo do artigo é
mostrar como acessar tabelas, consultas e stored procedures de
um banco de dados SQL Server (o LINQ to SQL só funciona com
ele) e também como realizar operações de alteração,
inclusão e exclusão de dados.

Para o exemplo do
artigo eu vou usar o banco de dados Northwind.mdf e a ferramenta
Visual C#C#68 conteúdosNovidades do C# 8.0: Default Interface MembersDev (Back & Front) · jun 2019C# 8.0 – Conheça suas novas funcionalidadesDev (Back & Front) · mai 2019Novidades do C# 8.0: Switch ExpressionsDev (Back & Front) · mar 2019Ver tudo em Dev (Back & Front) 2008 Express Edition.

A estrutura do banco de
dados Northwind.mdf, exibindo suas tabelas, Views e Stored
Procedures é exibida na figura abaixo:

Vamos criar uma
aplicação Windows Forms e exibir contendo três
formulários:

  • form1.cs – Onde
    iremos exibir as tabelas, consultas e stored procedures
    em um componente DataGridView;
  • form2.cs – Onde
    iremos incluir/alterar um cliente;
  • form3.cs – Onde
    iremos excluir um cliente.

01. O formulário form1.cs
irá exibir o resultado das consultas às tabelas,
querys e stored procedures em um controle
DataGridView e deverá
possuir um menu criado via controle MenuStrip conforme o leiaute
abaixo:

Para cada item do menu
vamos definir sub-itens conforme as figuras a seguir:

a. Consultas

b. Movimento

02. O formulário
form2.cs é exibido na figura abaixo e apresenta os controles
Label e TextBox para realizar a
alteração/inclusão na tabela
Customer:

03. O formulário
form3.cs, da figura abaixo, é usado para excluir um registro da
tabela Customer e possui o controle Label,
TextBox e Button:

Criando
o DataContext e
as classes com o código LINQ to SQL

Agora vamos criar a
infraestrutura usando classes onde devemos criar o código
usando LINQ to SQL. Antes, devemos realizar o mapeamento objeto
relacional para gerar as classes a partir das tabelas do
Northwind.

No menu Project -> Add
New Item
, selecione o template LINQ to SQL Classes, informe
o nome Northwind.dbml e clique em Add.

A seguir, arraste e
solte, a partir da janela DataBase Explorer, as tabelas do Northwind
para o descritor LINQ, a fim de gerar as classes com o
mapeamento ORM. Devemos arrastar também as stored procedures
Sales_by_Year e Ten_Most_Expensive_Products na painel de
métodos
do descritor, conforme a figura abaixo:

Com isso já temos todo
o mapeamento objeto relacional gerado e já podemos trabalhar com
as classes que representam as tabelas do nosso banco de dados.

Para isso eu poderia
criar uma classe e nela definir os métodos para acessar as
tabelas, consultas e stored procedures, e os métodos para
realizar alteração e inclusão, mas vou fazer diferente: vou
criar classes distintas para cada item. Assim, teremos as seguintes
classes:

  • acessoLinqTabelas.cs

    – contém os métodos LINQ para acessar as tabelas
    retornando todos os dados da tabela. Irei retornar os
    dados para as seguintes tabelas:
    Customers,Employees,
    Orders, Categories e Products;

  • acessoLinqConsultas.cs
    – contém os métodos LINQ para acessar as consultas: Orders by ID, Orders and Details e Employees by ID;
  • acessoLinqStoreProcedure.cs
    – contém os métodos para acessar as stored procedures:
    Sales by Year, Ten Most Expensive Products;
  • acessoLinqCrud.cs
    – contém os métodos para realizar as operações de incluir, alterar e excluir registros da tabela Customers.

01.
Criando
a classe para acessar as tabelas

Vamos iniciar, então,
criando a classe para acessar as tabelas selecionando no menu
Project -> Add Class e informando o nome acessoLinqTabelas.cs;

A seguir, defina o
código abaixo na classe:

using System;<br />using System.Collections.Generic;<br />using <br />System.Linq;<br />using System.Text;<br /><br />namespace LinqToSQL_Cshp1<br />{<br /><br />    class acessoLinqTabelas<br />    {<br />        /// <br /><br />       /// Obtem dados da tabela Customer <br />        /// <br /> summary> obtem; < returns> return<br />        }<br /><br />        /// <br />        /// Obtem dados da tabela <br />Employee <br />        /// <br />        /// <br /><br />        public static <br />System.Data.Linq.Table GetEmployeeTable()<br />        {<br /><br />           NorthwindDataContext dc = new<br /><br />NorthwindDataContext();<br />           return dc.GetTable< return<br /><br />       }<br />        /// <br />        /// Obtem dados da <br />tabela Order <br />        /// <br />        /// <br /><br />        public static <br />System.Data.Linq.Table GetOrderTable()<br />        {<br /><br />        NorthwindDataContext dc = new<br /><br />NorthwindDataContext();<br />            return dc.GetTable< return<br /><br />        }<br />        /// <br />        /// Obtem dados da <br />tabela Category <br />        /// <br />        /// <br /><br />        public static <br />System.Data.Linq.Table GetCategoryTable()<br />        {<br /><br />            NorthwindDataContext dc = new<br /><br />NorthwindDataContext();<br />            return dc.GetTable< return<br /><br />        } <br />        /// <br />        /// Obtem dados da <br />tabela Product <br />        /// <br />        /// <br /><br />        public static <br />System.Data.Linq.Table GetProductTable()<br />        {<br /><br />            NorthwindDataContext dc = new<br /><br />NorthwindDataContext();<br />            return dc.GetTable< return<br /><br />        }<br />    }<br />}

é referência em Visual Basic no Brasil e autor dos livros "Aprenda Rápido: ASP" e "ASP, ADO e Banco de Dados na Internet". Mantenedor do site macoratti.net.

Ver perfil