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 _
                                         Select
New With {.ID = oAlunos.alunoID, .Nome = oAlunos.nome, .Nota = oAlunos.nota, .Curso = oAlunos.Cursos.nome}

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