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:


José Carlos Macoratti