Crear una cadena de conexión y trabajar con SQL Server LocalDB

por Rick Anderson

Nota:

Hay disponible una versión actualizada de este tutorial con la versión más reciente de Visual Studio. El nuevo tutorial usa ASP.NET Core MVC, que proporciona muchas mejoras en este tutorial.

En este tutorial se enseña ASP.NET Core MVC con controladores y vistas. Razor Pages es una nueva alternativa en ASP.NET Core, un modelo de programación basado en páginas que facilita la creación de la interfaz de usuario web y es más productivo. Se recomienda probar el tutorial de Razor Pages antes de la versión de MVC. Tutorial de Razor Pages:

  • Es más fácil de seguir.
  • Cubre más funcionalidades.
  • Es el enfoque preferido para el desarrollo de aplicaciones nuevas.

Crear una cadena de conexión y trabajar con SQL Server LocalDB

La clase MovieDBContext que ha creado controla la tarea de conexión a la base de datos y la asignación de objetos Movie a los registros de la base de datos. Pero seguramente se pregunte cómo especificar a qué base de datos se conectará. En realidad, no es necesario especificar la base de datos que se va a usar, Entity Framework usará LocalDB de forma predeterminada. En esta sección, agregaremos explícitamente una cadena de conexión en el archivo Web.config de la aplicación.

SQL Server Express LocalDB (base de datos local)

LocalDB es una versión ligera del motor de base de datos express de SQL Server que se inicia a petición y se ejecuta en modo de usuario. LocalDB se ejecuta en un modo de ejecución especial de SQL Server Express que permite trabajar con bases de datos como archivos .mdf . Normalmente, los archivos de base de datos localDB se conservan en la carpeta App_Data de un proyecto web.

SQL Server Express no se recomienda para su uso en aplicaciones web de producción. LocalDB en particular no debe usarse para producción con una aplicación web porque no está diseñado para trabajar con IIS. Sin embargo, una base de datos localDB se puede migrar fácilmente a SQL Server o SQL Azure.

En Visual Studio 2017, LocalDB se instala de forma predeterminada con Visual Studio.

De forma predeterminada, Entity Framework busca una cadena de conexión denominada igual que la clase de contexto de objeto (MovieDBContext para este proyecto). Para obtener más información, vea Cadenas de conexión de SQL Server para ASP.NET aplicaciones web.

Abra el archivo raíz de la aplicaciónWeb.config que se muestra a continuación. (No el archivo Web.config en la carpeta Vistas ).

Captura de pantalla que muestra la ventana del Explorador de soluciones y Web.config está seleccionada y rodeada por un círculo rojo.

Busque el <connectionStrings> elemento :

Captura de pantalla que muestra el código y el elemento de cadena de conexión se rodea en rojo.

Agregue la siguiente cadena de conexión al elemento <connectionStrings> del archivo Web.config.

<add name="MovieDBContext" 
   connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=aspnet-MvcMovie;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Movies.mdf" 
   providerName="System.Data.SqlClient" 
/>

En el ejemplo siguiente se muestra una parte del archivo Web.config con la nueva cadena de conexión agregada:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=aspnet-MvcMovie-fefdc1f0-bd81-4ce9-b712-93a062e01031;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-MvcMovie-fefdc1f0-bd81-4ce9-b712-93a062e01031.mdf" providerName="System.Data.SqlClient" />
  <add name="MovieDBContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=aspnet-MvcMovie;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Movies.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>

Las dos cadenas de conexión son muy similares. La primera cadena de conexión se denomina DefaultConnection y se usa para que la base de datos de pertenencia controle quién puede acceder a la aplicación. La cadena de conexión que ha agregado especifica una base de datos LocalDB denominada Movie.mdf ubicada en la carpeta App_Data . En este tutorial no usaremos la base de datos de pertenencia, para obtener más información sobre la pertenencia, autenticación y seguridad, consulte mi tutorial Creación de una aplicación de ASP.NET MVC con autenticación y BASE de datos SQL e implementación en Azure App Service.

El nombre de la cadena de conexión debe coincidir con el nombre de la clase DbContext .

using System;
using System.Data.Entity;

namespace MvcMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }

    public class MovieDBContext : DbContext
    {
        public DbSet<Movie> Movies { get; set; }
    }
}

En realidad, no es necesario agregar la MovieDBContext cadena de conexión. Si no especifica una cadena de conexión, Entity Framework creará una base de datos localDB en el directorio users con el nombre completo de la clase DbContext (en este caso MvcMovie.Models.MovieDBContext). Puede asignar un nombre a la base de datos como quiera, siempre y cuando tenga el sufijo .MDF. Por ejemplo, podríamos asignar un nombre al MyFilms.mdf de base de datos.

A continuación, creará una clase MoviesController que puede usar para mostrar los datos de películas y permitir a los usuarios que creen listas de películas.