Usando o .NET Entity Framework em uma aplicação WEB
Este artigo é um complemento ao artigo - Introdução ao ADO .NET Entity Framework - onde irei mostrar passo a passo como desenvolver aplicações usando o ADO .NET Entity Framework com aplicações ASP .NET.
Os recursos necessários para acompanhar este artigo são:
Para simplificar o exemplo eu criei uma banco de dados chamado Escola no SQL Server 2005 Express contendo duas tabelas:
As tabelas foram criadas usando a ferramenta SQL Server Management Studio e possui a estrutura conforme imagens abaixo:
A título de exemplo eu já preenchi as tabelas Alunos e Cursos com dados aleatórios conforme abaixo:
As duas tabelas estão relacionadas pela chave cursoID conforme o diagrama a seguir:
Para saber como usar a ferramenta veja o link : Usando o SQL Server Management Studio
Abra o Visual Studio 2008 com SP1 e no menu File selecione New Project;
Na janela New Project selecione o item Web em Project Types e selecione "!ASP.NET Web Application" em Templates;
Informe o nome edn_ef1 e clique no botão OK;
Na janela Solution Explorer clique com o botão direito do mouse sobre o projeto e selecione Add -> New Item;
Na próxima janela selecione o template "ADO.NET
Entity Data Model" e informe o nome Escola.edmx e clique em OK;
O assistente do Entity Data Model será iniciado. Selecione a opção Generate from database e clique em Next>;
Na janela a seguir clique no botão New Connection e selecione o item Microsoft SQL Server em Choose Data Source e clique em Continue;
Informe o nome do seu servidor, eu estou usando a instância local do meu SQL Server Express Edition: .\SQLEXPRESS, e a seguir selecione o banco de dados, Escola que foi criado anteriormente e clique em OK;
Será exibida a janela com a conexão e a Entity connection String, aceite a configuração padrão e clique em Next>;
Observe que a Entity connection string é mais complexa do que uma string de conexão pois ela precisa incluir a string de conexão e a informação adicional sobre o modelo e o provedor. Onde temos:
A entityConnection também pode ler uma string de conexão a partir do arquivo de configuração.
Ainda na janela do Assistente , selecione as tabelas Alunos e Cursos e clique no botão Finish;
Ao final deveremos obter como resultado uma representação gráfica do Entity Data Model gerada pelo assistente. Observe que ele não é exatamente um mapeamento da tabela no banco de dados. Veja também que a entidade Alunos possui uma referência a cursos.
Se você clicar com o botão direito do mouse sobre o arquivo .edmx e escolher abrir o arquivo em um editor XML irá ver o seguinte:
Observe as definições de EntitySet, AssociationSet e Properties
Operações avançadas com o Entity Framework podem exigir a edição deste arquivo XML, por isso é bom conhecer o que esta por "trás dos panos..."
Vamos usar os recursos criados para acessar os dados das tabelas e exibi-los na página ASP .NET.
A partir da ToolBox arraste e solte na página Default.aspx os controles GridView e Button conforme o leiaute abaixo:
Em seguida no evento Click do botão de comando inclua o código abaixo:
Protected Sub Button1_Click(ByVal
sender As Object,
ByVal e As
EventArgs) Handles
Button1.Click
Dim ctxt As
New EscolaEntities
Me.GridView1.DataSource
= From oAlunos In
ctxt.Alunos _ Me.GridView1.DataBind() End Sub |
No código acima estamos criando uma instância da de EscolaEntities que representa as entidades do meu domínio.
A seguir criei uma consulta LINQ onde defini um objeto anônimo chamado oAlunos e seu tipo com o resultado da consulta da coleção Alunos.
Em seguida criamos um novo tipo de dados usando o recurso do LINQ chamado anonymous type que são ID, Nome, Nota e Curso obtendo os dados das entidades criadas através da referência a oAlunos.
O LINQ vai converter essa solicitação em um código T-SQL, vai buscar os registros aos objetos solicitados e vai retornar uma coleção de objetos que serão armazenados no objeto oAlunos e em seguida exibidos no GridView.
Executando o projeto e clicando no botão de comando iremos obter:
Em um próximo artigo irei mostrar como efetuar operações básicas de manutenção de dados com Entity Framework.
Pegue o projeto completo aqui: adn_ef1.zip
Eu sei é apenas .NET, mas eu gosto...
referências:
José Carlos Macoratti