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.

Publicado por

Vicente García Diez

Mi nombre es Vicente García Diez y soy arquitecto empresarial, experto en tecnologías Microsoft y transformaciones digitales complejas. Soy socio director y Trusted Advisor en abstratio En mi blog trataré temas de Estrategia IT y lecciones aprendidas en mis proyectos.

2 comentarios sobre “Novedades Entity Framework 4.0 : Generación de la base de datos”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *