web 2.0

Introdução ao Asp .Net Dynamic Data

Vamos conhecer um pouco sobre Dynamic Data e ver o que ele é capaz de fazer por nós. Dynamic Data foi adicionado inicialmente no SP1 do Visual Studio 2008. Ele nada mais é, do que um framework que facilita a vida do desenvolvedor no sentido de gerar todo o CRUD (Create, Read, Update e Delete). Com Dynamic Data podemos gerar páginas de uma maneira simples e muito prática, pois ele já possui um estrutura de templates pronta para isso.

Bem vamos ver isso na prática.

Abra o Visual Studio 2010 e crie um projeto do tipo “Asp .Net Dynamic Data Linq to SQL”, dê o nome ao projeto de DynamicDataIntro conforme a figura 01.

dd_01

Figura 01 – criação do projeto


O Visual Studio irá gerar uma estrutura igual a figura 02.

dd_02

Figura 02 – estrutura de pastas


Observe que ele gerou uma pasta com o nome de DynamicData, contendo vários sub-folders. Vamos ver os principais sub-folders em detalhes.

PageTemplates – responsável por renderizar qualquer dado em qualquer tabela, basicamente seus templates são: Lista (List.aspx), Detalhes (Details.aspx), Inserir (Insert.aspx) e Edição (Edit.aspx).

EntityTemplates – permite a customização de linhas e tabelas, pois nos dá uma flexibilidade maior quanto a detalhes de linhas e campos em particular.

FieldTemplates – esta pasta contem templates para renderizar os dados conforme seu tipo, no caso o Dynamic Data verifica o tipo do dado e escolhe o modelo que mais se adequa a ele, por exemplo, se um campo for do tipo bit no banco ele irá selecionar um template Boolean para representar o dado na forma booleana.

FilterTemplates – são templates responsáveis por realizar filtros em pesquisa. Temos como templates Boolean.ascx, ForeignKey.ascx, e Enumeration.ascx

Para que o Dynamic Data possa gerar as telas para nós, precisaremos criar um mapeamento para nosso banco de dados. Para isso clique com o botão direito na solução, vá em Add New Item, selecione Data e dos templates apresentados, selecione “Linq To SQL Classes” e dê o nome de “NorthWind.dbml”. Este arquivo será responsável por conter todas as classes mapeadas de nosso banco de dados.

Para isso, no Solution Explorer, selecione um banco de dados, no meu caso estou selecionando o NorthWind, selecione as tabelas que deseja trabalhar, e as arraste para o projeto, ele deverá criar todas as classes para nós conforme a figura 03.

dd_04

Figura 04 – criação do mapeamento das tabelas em classes.


Após ter gerado as classes, o Dynamic Data cria uma classes, no nosso caso, NorthWindDataContext que irá conter todos os objetos (tabelas que selecionamos) que iremos utilizar em nosso projeto.

Agora precisamos apenas dizer ao Dynamic Data qual é o contexto que iremos trabalhar.

Procure o método public static void RegisterRoutes( RouteCollection routes ) no arquivo Global.asax, e descomente a linha

//DefaultModel.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });

Onde está escrito YourDataContextType você irá colocar o data context que foi gerado para nós, no caso NorthWindDataContext.

Para que ele exiba as tabelas devemos também alterar o ScaffoldAllTables para TRUE.

Pronto, agora basta rodar o projeto e o Dynamic Data se encarregará de todo o resto.

Abaixo algumas  telas do projeto em execução.

dd_05

Figura 05 – tela inicial do projeto

dd_06

Figura 06 – listagem de clientes

dd_07

Figura 07 – edição de cliente

Concluindo, vimos que com apenas a alteração de uma linha de código você já ganhou um sistema completo para inclusão e manipulação dos dados, isto é Dynamic Data, preparem-se para uma nova era no mundo de aplicação .Net!

Tags:

Asp .Net | Desenvolvimento Web | Dynamic Data

Comentários

Izabel Rodrigues Brazil, on 14/6/2010 21:33:55 Said:

Izabel Rodrigues

Valeu Luciano,
vou esperar mais posts aqui.. agora eu posso dizer que to esperando o capitulo 2... rsrs

deixa eu ir reproduzir a lição de hj aqui.. rsrsrs

Izabel Rodrigues Brazil, on 14/6/2010 21:52:25 Said:

Izabel Rodrigues

Luciano to com uma dúvida, tem como a gente gerar um banco automatica de exemplo pra estudar? Pq no seu post vc já tinha um banco montado dai so selecionou.. mas o meu ta vazio , acabei de instalar o vs2010 aqui pra começar a estudar...

como que faço??

Luciano Lima Brazil, on 15/6/2010 6:08:02 Said:

Luciano Lima

Izabel, utiliza esse link para baixar o NorthWind, banco de dados de exemplo.
Ai no VS2010 basta vc utilizar este banco.

www.microsoft.com/.../details.aspx

Izabel Rodrigues Brazil, on 16/6/2010 21:37:38 Said:

Izabel Rodrigues

Luciano,
Consegui instalar o banco direitinho agora que vc passou o link, refiz a lição até o final. Ná Hora que rodei o projeto to encontrando esse erro:

Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: Could not load type 'DynamicDataIntro.Global'.

Source Error:

Line 1:  <%@ Application Language="C#" CodeBehind="Global.asax.cs" Inherits="DynamicDataIntro.Global" %>


Source File: /global.asax    Line: 1


LINHA 30 do meu global.asax : DefaultModel.RegisterContext(typeof(NorthWindDataContext), new ContextConfiguration() { ScaffoldAllTables = true });

Acredito que o nome do meu datacontext ta errado.. pq eu fiquei na dúvida que nome era e ai copiei do teu exemplo...

Aff... uma hora eu acabo esse exercício...

Izabel Rodrigues Brazil, on 16/6/2010 22:05:12 Said:

Izabel Rodrigues

Consegui resolver o problema aqui Luciano.
O erro tava na linha 30 mesmo.... o nome correto do meu DataContext era

DynamicDataIntro.DynamicData.NorthWindDataContext

Eu escrevi somente NorthWindDataContext e vi que ficou sublinhado dai eu cliquei la e o VS2010 me mostrou as opções..

Agora ta resolvido, mas so nao entendi pq ele me pediu nome completo...

Brigadao pela paciência.. Depois de tanta luta eu tinha que vir ate aqui e postar a solução... rsrs

Um abraço e até a proxima!!!

Luciano Lima Brazil, on 20/9/2010 5:18:05 Said:

Luciano Lima

Thank´s for your comment.
I´m glad to know that my post´s are very usefull!

Luciano Lima Brazil, on 21/9/2010 7:58:16 Said:

Luciano Lima

Thank's a lot. I really appreciated your comment!!