Database First

En este vídeo y tutorial paso a paso se proporciona una introducción al Database First desarrollo mediante Entity Framework. Database First permite realizar ingeniería inversa de un modelo a partir de una base de datos existente. El modelo se almacena en un archivo EDMX (extensión .edmx) y se puede ver y editar en el Entity Framework Designer. Las clases con las que interactúa en la aplicación se generan automáticamente a partir del archivo EDMX.

Visualización del vídeo

En este vídeo se proporciona una introducción al Database First desarrollo mediante Entity Framework. Database First permite realizar ingeniería inversa de un modelo a partir de una base de datos existente. El modelo se almacena en un archivo EDMX (extensión .edmx) y se puede ver y editar en el Entity Framework Designer. Las clases con las que interactúa en la aplicación se generan automáticamente a partir del archivo EDMX.

Presentado por: Rowan Miller

Vídeo:WMVMP4WMV (ZIP)

Requisitos previos

Tendrá que tener al menos Visual Studio 2010 o Visual Studio 2012 para completar este tutorial.

Si usa Visual Studio 2010, también necesitará tener NuGet instalado.

 

1. Crear una base de datos existente

Normalmente, cuando el destino es una base de datos existente, ya se creará, pero para este tutorial es necesario crear una base de datos a la que acceder.

El servidor de base de datos que se instala con Visual Studio es diferente en función de la versión de Visual Studio que haya instalado:

  • Si usa Visual Studio 2010, va a crear una base de datos SQL Express.
  • Si usa Visual Studio 2012, va a crear una base de LocalDB datos.

 

Vamos a continuar y a generar la base de datos.

  • Apertura de Visual Studio

  • Vista: Explorador de servidores

  • Haga clic con el botón derecho en Conexiones de datos - Agregar conexión...

  • Si no se ha conectado a una base de datos desde Explorador de servidores antes de tener que seleccionar Microsoft SQL Server como origen de datos.

    Seleccionar origen de datos

  • Conectar a LocalDB o SQL Express, en función de cuál haya instalado, y escriba DatabaseFirst.Blogging como nombre de la base de datos.

    Sql Express Connection DF

    LocalDB DF de conexión

  • Seleccione Aceptar y se le preguntará si desea crear una nueva base de datos, seleccione Sí.

    Cuadro de diálogo Crear base de datos

  • La nueva base de datos aparecerá ahora en Explorador de servidores, haga clic con el botón derecho en ella y seleccione Nueva consulta.

  • Copie el siguiente SQL en la nueva consulta, haga clic con el botón derecho en la consulta y seleccione Ejecutar.

CREATE TABLE [dbo].[Blogs] (
    [BlogId] INT IDENTITY (1, 1) NOT NULL,
    [Name] NVARCHAR (200) NULL,
    [Url]  NVARCHAR (200) NULL,
    CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
);

CREATE TABLE [dbo].[Posts] (
    [PostId] INT IDENTITY (1, 1) NOT NULL,
    [Title] NVARCHAR (200) NULL,
    [Content] NTEXT NULL,
    [BlogId] INT NOT NULL,
    CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
    CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [dbo].[Blogs] ([BlogId]) ON DELETE CASCADE
);

2. Creación de la aplicación

Para que todo sea sencillo, vamos a crear una aplicación de consola básica que use el Database First para realizar el acceso a datos:

  • Apertura de Visual Studio
  • Archivo - Nuevo - > Project...
  • Seleccione Windows en el menú izquierdo y Aplicación de consola.
  • Escriba DatabaseFirstSample como nombre.
  • Seleccione Aceptar.

 

3. Modelo de ingeniería inversa

Vamos a hacer uso de Entity Framework Designer, que se incluye como parte de Visual Studio, para crear el modelo.

  • Project: Agregar nuevo elemento...

  • Seleccione Datos en el menú izquierdo y, a continuación, ADO.NET Entity Data Model

  • Escriba BloggingModel como nombre y haga clic en Aceptar.

  • Se inicia el Asistente para Entity Data Model datos.

  • Seleccione Generar a partir de la base de datos y haga clic en Siguiente.

    Paso 1 del asistente

  • Seleccione la conexión a la base de datos que creó en la primera sección, escriba BloggingContext como nombre de la cadena de conexión y haga clic en Siguiente.

    Paso 2 del asistente

  • Haga clic en la casilla situada junto a "Tablas" para importar todas las tablas y haga clic en "Finalizar".

    Paso 3 del asistente

 

Una vez completado el proceso de ingeniería inversa, el nuevo modelo se agrega al proyecto y se abre para que lo vea en el Entity Framework Designer. También App.config archivo de conexión al proyecto con los detalles de conexión de la base de datos.

Modelo inicial

Pasos adicionales de Visual Studio 2010

Si está trabajando en Visual Studio 2010, hay algunos pasos adicionales que debe seguir para actualizar a la versión más reciente de Entity Framework. La actualización es importante porque proporciona acceso a una superficie de API mejorada, que es mucho más fácil de usar, así como a las correcciones de errores más recientes.

En primer lugar, es necesario obtener la versión más reciente de Entity Framework de NuGet.

  • Project: administrar NuGet paquetes...Si no tiene la opción Administrar NuGet paquetes... debe instalar la versión más reciente de NuGet
  • Seleccione la pestaña Online (En línea).
  • Selección del paquete EntityFramework
  • Haz clic en Instalar

A continuación, es necesario intercambiar el modelo para generar código que use la API de DbContext, que se introdujo en versiones posteriores de Entity Framework.

  • Haga clic con el botón derecho en un punto vacío del modelo en EF Designer y seleccione Agregar elemento de generación de código...

  • Seleccione Plantillas en línea en el menú de la izquierda y busque DbContext.

  • Seleccione el generador de DbContext de EF 5.x para C#,escriba BloggingModel como nombre y haga clic en Agregar.

    Plantilla de DbContext

 

4. Lectura de & datos de escritura

Ahora que tenemos un modelo, es el momento de usarlo para acceder a algunos datos. Las clases que vamos a usar para acceder a los datos se generan automáticamente en función del archivo EDMX.

Esta captura de pantalla es de Visual Studio 2012, si usa Visual Studio 2010, los archivos BloggingModel.tt y BloggingModel.Context.tt estarán directamente en el proyecto en lugar de estar anidados en el archivo EDMX.

Clases generadas DF

 

Implemente el método Main en Program.cs como se muestra a continuación. Este código crea una nueva instancia de nuestro contexto y, a continuación, la usa para insertar un nuevo blog. A continuación, usa una consulta LINQ para recuperar todos los blogs de la base de datos ordenados alfabéticamente por Título.

class Program
{
    static void Main(string[] args)
    {
        using (var db = new BloggingContext())
        {
            // Create and save a new Blog
            Console.Write("Enter a name for a new Blog: ");
            var name = Console.ReadLine();

            var blog = new Blog { Name = name };
            db.Blogs.Add(blog);
            db.SaveChanges();

            // Display all Blogs from the database
            var query = from b in db.Blogs
                        orderby b.Name
                        select b;

            Console.WriteLine("All blogs in the database:");
            foreach (var item in query)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

Ahora puede ejecutar la aplicación y probarla.

Enter a name for a new Blog: ADO.NET Blog
All blogs in the database:
ADO.NET Blog
Press any key to exit...

 

5. Tratamiento de cambios en la base de datos

Ahora es el momento de realizar algunos cambios en el esquema de la base de datos, cuando realicemos estos cambios, también es necesario actualizar el modelo para reflejar esos cambios.

El primer paso consiste en realizar algunos cambios en el esquema de la base de datos. Vamos a agregar una tabla Users al esquema.

  • Haga clic con el botón derecho en la base de datos DatabaseFirst.Blogging Explorador de servidores seleccione Nueva consulta.
  • Copie el siguiente SQL en la nueva consulta, haga clic con el botón derecho en la consulta y seleccione Ejecutar.
CREATE TABLE [dbo].[Users]
(
    [Username] NVARCHAR(50) NOT NULL PRIMARY KEY,  
    [DisplayName] NVARCHAR(MAX) NULL
)

Ahora que el esquema está actualizado, es el momento de actualizar el modelo con esos cambios.

  • Haga clic con el botón derecho en un punto vacío del modelo en EF Designer y seleccione "Actualizar modelo desde base de datos...". Se iniciará el Asistente para actualizaciones.

  • En la pestaña Agregar del Asistente para actualización, active la casilla situada junto a Tablas, lo que indica que queremos agregar nuevas tablas del esquema. La pestaña Actualizar muestra las tablas existentes en el modelo que se comprobarán si hay cambios durante la actualización. Las pestañas Eliminar muestran las tablas que se han quitado del esquema y también se quitarán del modelo como parte de la actualización. La información de estas dos pestañas se detecta automáticamente y solo se proporciona con fines informativos, no se puede cambiar ninguna configuración.

    Asistente para actualización

  • Haga clic en Finalizar en el Asistente para actualizaciones.

 

El modelo ahora se actualiza para incluir una nueva entidad User que se asigna a la tabla Users que agregamos a la base de datos.

Modelo actualizado

Resumen

En este tutorial se ha visto Database First desarrollo, lo que nos permitió crear un modelo en EF Designer basado en una base de datos existente. A continuación, se usa ese modelo para leer y escribir algunos datos de la base de datos. Por último, hemos actualizado el modelo para reflejar los cambios realizados en el esquema de la base de datos.