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!