ASP .NET - Usando o controle EntityDataSource
Neste artigo eu vou mostrar como usar o novo controle EntityDataSource passo a passo. Para iniciar vamos ver os conceitos básicos sobre o EntityDataSource: o que é para que serve.
O controle EntityDataSource representa um Entity Data Model (EDM) para controles de vinculação de dados em aplicações ASP .NET e suporta a vinculação de dados em aplicações Web que usam o ADO .NET Entity Framework; o controle esta disponível como parte da plataforma .NET Framework 3.5 com SP1.
Se você esta habituado com o modelo de vinculação de dados e com controles como SqlDataSource, LinqDataSource, XmlDataSource e ObjectDataSource verá que o controle EntityDataSource é praticamente idêntico na maneira de realizar a vinculação a esses controles.
Como os demais controles de fonte de dados de servidor, o EntityDataSource gerencia operações de criação, leitura, atualização e exclusão contra uma fonte de dados via controles vinculados em uma página ASP .NET trabalhando dessa forma com grids, formulários com ordenação, filtragem , controles dropdown e cenários de mestre-detalhes, tornando assim a vinculação declarativa de controles de interface para com o Entity Data Model muito simples de ser realizada.
Os controles ListView, FormView, DetailsView e GridView fornecem de forma automática as funcionalidades para ler, incluir, atualizar e excluir quando usados com o controle EntityDataSource. |
O controle EntityDataSource permite que você efetue uma consulta a um Entity Data Model (EDM) e vincule os resultados a controles de servidor web; ele simplifica a vinculação de dados definida por um EDM para os controles em uma aplicação ASP .NET tomando vantagem dos componentes Object Services do ADO .NET Entity Framework, habilitando assim os controles a compor e executar consulta de objetos e vincular os controles aos objetos retornados , os quais são instâncias de tipos de entidades que são definidas no EDM.
Em Object Services, um ObjectContext tipado representa o container da entidade do modelo conceitual. A classe ObjectContext é a classe primária para interagir com dados definidos por um EDM. Estes dados estão na forma de objetos que são instâncias de tipos de entidades. (Um ObjectContext tipado encapsula a conexão com o banco de dados.) |
Você precisa configurar as propriedades do controle EntityDataSource para habilitar a conexão com o EDM e retornar os tipos de entidades corretos.
- Quando você define as propriedades
ConnectionString e DefatulContainerName, o controle pode criar o
ObjectContext que ele usa para executar consultas de objetos.
- Quando você define as propriedade EntitySetName e EntityTypeFilter
define o tipo de ObjectQuery<(Of <(T>)>) que o
controle irá compor.
Agora vamos a parte prática...
Usando o EntityDataSource
Abra o Visual Studio 2008 com SP1 e no menu File selecione New Project;
Na janela New Project selecione Visual Basic -> Web e em Templates selecione ASP .NET Web Application informando o nome usando EDS1;
Selecione a página Default.aspx e a partir da ToolBox , na guia Data, inclua um controle GridView e o controle EntityDataSource, arrastando e soltando na página conforme o leiaute abaixo:
Vamos agora definir o nosso modelo conceitual de dados criando um Entity Data Model a partir do assistente do Entity Framework..
A partir do menu WebSite selecione Add New Item, e, na janela abaixo selecione o template ADO .NET Entity Data Model informando o nome Macoratti.edmx e clique em Add;
Como vamos gerar o nosso modelo a partir de um banco de dados já existente selecione o item Generate from Database e clique em Next>;
Eu usar o banco de dados Macoratti.mdf criado para este exemplo que esta no meu SQL Server Express local, por isso clique no botão New Connection (1) e a seguir informe o seu servidor SQL Server local, o padrão é .\sqlexpress(2); a seguir selecione o banco de dados criado no SQL Server(3) e clique em OK;
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:
MacorattiEntities será a nossa referência para o mapeamento e o modelo conceitual;
Clique no botão Next>;
A seguir selecione as entidades que irão compor o nosso modelo conceitual , aceite o nome padrão MacorattiModel e clique em FInish;
Acima temos a representação gráfica do Modelo de dados de entidades (EDM) gerado pelo assistente. Não é exatamente um mapeamento para as tabelas do banco de dados; observe que a entidade Categorias possui uma referencia a Produtos e Produtos uma referência a Categorias e ItensPedidos sob Navigation Properties, estes relacionamentos foram derivados a partir das restrições das chaves primárias pelo gerador EDM.
As propriedades de navegação são usadas para navegar nas associações do arquivo CSDL e se tornam propriedades públicas na classe EntityType e são usadas para fazer referência a outra entidade ou conjunto de entidades associadas a entidade original.
A figura abaixo mostra os arquivos gerados para descrever as entidades de negócios por meio do modelo de entidades que fazem partem do arquivo .edmx gerado. O arquivo .edmx gerado é um arquivo XML que contém 3 seções principais:
Os arquivos CSDL, MSL e SSDL são usados em tempo de compilação para gerar as classes que representarão o modelo de dados de entidades (EDM).
Agora vamos configurar o controle EntityDataSource:
Selecione a página Default.aspx e no modo design selecione o controle EntityDataSource e clique em Configure Data Source...;
A seguir vamos configurar o ObjectContext selecionando a ConnectionString e o DefaultContainerName conforme abaixo:
Na próxima janela vamos definir o ENtitySetName como Categorias e marcar todos os valores da entidade marcando as opções para inserir, atualizar e deletar automaticamente;
Selecione o controle GridView na página Default.aspx e em Choose Data Source selecione o controle recém configurado EntityDataSource1 e marque as opções para habilitar as operações para manutenção dos dados conforme a figura :
Abaixo o resultado da exibição dos dados e da edição após clicar no botão Edit:
Dessa forma vimos como usar e para que serve o controle EntityDataSource.
Eu sei é apenas ASP .NET, mas eu gosto...
Referências:
.NET - Introdução ao ADO .NET Entity Framework - Usando o EF em uma aplicação web
José Carlos Macoratti