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”:
Y crear un modelo añadiendo, por ejemplo, dos entidades:
Y una relación entre ellas:
Ahora, podríamos generar con un asistente nuestra base de datos:
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="Data Source=.sqlexpress;Initial Catalog=PlainConceptsExample;Integrated Security=True;MultipleActiveResultSets=True"» 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.
Tu blog se ve mal en Chrome
Saludos
pues usa un navegador de verdad 🙂