Novedades Entity Framework 4.0 : Generación de la base de datos

En la nueva versión de Entity Framework 4.0 adelantada con el .Net Framework 4.0 RC se han implementado métodos que nuestro contexto hereda de ObjectContext para manejar la base de datos con la que se mapeará nuestro modelo. 

Podemos partir de un modelo vacio en el wizard de la creación del modelo, eligiendo “Empty model”:

image

 Y crear un modelo añadiendo, por ejemplo, dos entidades:

image

Y una relación entre ellas:

image

image

 Ahora, podríamos generar con un asistente nuestra base de datos:

image

 Pero vamos a utilizar el método CreateDatabase. Para ello, tenemos que crear una instancia de nuestro contexto, en este caso, PlainConceptsContext:

Utilizando el constructor por defecto, se hará uso de la cadena de conexión configurada en nuestro App.config:

<?xml version=”1.0″ encoding=”utf-8″?>
<configuration>
  <connectionStrings>
    <add name=”PlainConceptsContext” connectionString=”metadata=res://*/PlainConceptsModel.csdl|res://*/PlainConceptsModel.ssdl|res://*/PlainConceptsModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.sqlexpress;Initial Catalog=PlainConceptsExample;Integrated Security=True;MultipleActiveResultSets=True&quot;” providerName=”System.Data.EntityClient” />
  </connectionStrings>
</configuration>

 Y, ahora:

PlainConceptsContext context = new PlainConceptsContext();
context.CreateDatabase();

 Aunque también se puede hacer uso del resto de sobrecargas que nuestro contexto nos provee.

 Para completar esta funcionalidad, disponemos de los siguientes métodos:

– context.DatabaseExists() :

Para evitar el lanzamiento de una SqlException por intentar crear una base de datos con un nombre ya existente, podemos tener un código como el siguiente:

            PlainConceptsContext context = new PlainConceptsContext();
            if (!context.DatabaseExists())
            {
                context.CreateDatabase();
            } 

– context.CreateDatabaseScript() :

Este método nos devolverá un string que contiene el script de creación de nuestra base de datos:

create table [dbo].[People] (
    [IdPerson] [int] not null identity,
    [Name] [nvarchar](max) not null,
    [Age] [int] not null,
    primary key ([IdPerson])
);
create table [dbo].[Pets] (
    [IdPet] [int] not null identity,
    [Name] [nvarchar](max) not null,
    [Age] [int] not null,
    [IdPerson] [int] not null,
    [PersonIdPerson] [int] not null,
    primary key ([IdPet])
);
alter table [dbo].[Pets] add constraint [PersonPet] foreign key ([PersonIdPerson]) references [dbo].[People]([IdPerson]);

– context.DeleteDatabase() :

Este método borrará la base de datos a la que ataca nuestro modelo.

Entity Framework : Documentación de código generado

Documentar nuestro código es una buena práctica reconocida que ayuda a la legibilidad y mantenimiento en nuestros desarrollos. De todos es conocido la tag Summary para documentar las cabeceras de nuestras clases, métodos, etc.

 Bien, si modelamos una clase con en Entity Framework, el código generado posee una tag con un comentario como el siguiente:

image

 Pero esto tiene fácil arreglo, si nos vamos al diseñador de nuestro modelo, en la pestaña de Propiedades, seleccionando la propiedad Age del ejemplo anterior, tendremos el siguiente apartado:

image

 Que podremos rellenar con el texto que deseamos que aparezca en la cabecera de esta propiedad y, por tanto, en nuesto IntelliSense o nuestro proyecto de documentación generado, por ejemplo, con la herramienta Sandcastle

 Una vez recompilado nuestro proyecto, el código generado será el siguiente:

image

 

 Y ya en tiempo de codificación:

image

 Espero que este pequeño consejo os ayude a la documentación en tiempo de desarrollo de vuestro código cuando utilicéis Entity Framework 🙂