Pasión por la tecnología…

noviembre 6, 2008

ASP.NET Dynamic Data: Scaffolding!

Archivado en: .NET Framework 3.5,ASP.NET Dynamic Data,Visual Studio 2008 — Juan Carlos González Martín @ 23:44

En este post y en los siguientes os vamos a presentar una de las grandes novedades de .NET Framework 3.5 SP1 y Visual Studio 2008 SP1: ASP.NET Dynamic Data. Esta tecnología nos proporciona toda la infraestructura necesaria para crear aplicaciones web dinámicas basadas en un modelo de datos de ADO.NET Entity Framework (ADO.NET EF) o de LINQ To SQL (Nota: Proporciona scaffolding sobre el modelo). En nuestro caso, utilizaremos un EDM de ADO.NET EF. Empecemos.

Primeros pasos con ASP.NET Dynamic Data

Para probar la funcionalidad de ASP.NET Dynamic Data seguiremos los siguientes pasos:

  • Creamos en primer lugar un proyecto Web de Visual Studio 2008 de tipo Dynamic Data Entities Web Application (Nota: Para LINQ To SQL elegiríamos Dynamic Data Web Application).
  • Tras pulsar OK, veremos que se nos crea toda la infraestructura necesaria para generar interfaces de usuario dinámicas a partir del modelo (de datos o de entidades) que definamos. Se trata de una aplicación web centrada en datos formada por una serie de plantillas de páginas y campos que aportan el carácter dinámico de una aplicación ASP.NET Dynamic Data.
  • Una vez creado el proyecto de ASP.NET Dynamic Data, tenemos que crear el modelo en el que se apoya. Como se ha comentado, se trata de un EDM de ADO.NET EF. Vamos a crear un modelo basado en la base de datos (BD) AdventureWorksLT. Añadimos un nuevo elemento a nuestro proyecto de tipo ADO.NET Entity Data Model.
image image

image

Para crear el EDM seguimos los siguientes pasos:

  • Creamos la cadena de conexión a la BD AdventureWorksLT.
  • Especificamos un nombre para la cadena de conexión: AdventureWorksContext.
  • Elegimos todas las tablas de AdventureWorksLT exceptuando la tabla BuildVersion:
image image

image

Una vez creado el EDM, tenemos que conectarlo con la aplicación Dynamic Data que hemos creado. Para ello, abrimos el archivo Global.asax del proyecto y descomentamos y actualizamos la línea siguiente:

            model.RegisterContext(typeof(AdventureWorksContext),

                new ContextConfiguration() { ScaffoldAllTables = true });

De esta forma:

  • Estamos registrando nuestro EDM en nuestra aplicación ASP.NET Dynamic Data.
  • Especificamos que el atributo ScaffoldAllTables tenga el valor True, de manera que permitimos que todas las tablas de nuestro modelo tengan una plantilla asociada. Si quisiéramos tener sólo plantillas para ciertas tablas del modelo, tendríamos que crear una clase parcial para estas tablas y aplicar el atributo [Scaffold(true)] en su definición.

Sin más, ejecutamos la aplicación para ver que obtenemos:

  • En primer lugar, se muestra una página principal en la que se listan todas las tablas del EDM subyacente.
  • De nuevo en la página de detalle de la categoría tenemos soporte completo para operaciones CRUD sin necesidad de tener que escribir ningún tipo de código de acceso a datos.
  • Una duda que surge en torno a ASP.NET Dynamic Data es relativa a sí se está usando generación de código o no. La respuesta es que no, puesto que se están usando una serie de plantillas ASP.NET que renderizan de manera dinámica las páginas para cada entidad del modelo. Lógicamente, tendremos una plantilla para cada estado posible de un registro, y esto es lo que da el soporte CRUD comentado.
image image

image

Además de las plantillas de páginas, tenemos una serie de plantillas a nivel de campo que permiten renderizar campos individuales en cada página. Hay una serie de plantillas para distintos estados (edición, inserción), que son user controls, preparadas para renderizar un cierto tipo de datos. Además, tendremos plantillas que no mapean tipos CLR, sino que se utilizan para los campos de tipo Foreing Key.

 

image 

Y hasta aquí llega este primer post sobre ASP.NET Dynamic Data. Espero que os haya resultado interesante.

El tema Rubric. Blog de WordPress.com.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 40 seguidores