Condividi tramite


Creazione di una stringa di connessione e uso di SQL Server LocalDB

di Rick Anderson

Nota

Una versione aggiornata di questa esercitazione è disponibile qui usando la versione più recente di Visual Studio. La nuova esercitazione usa ASP.NET Core MVC, che offre molti miglioramenti in questa esercitazione.

Questa esercitazione illustra ASP.NET Core MVC con i controller e le viste. Razor Pages è una nuova alternativa in ASP.NET Core, un modello di programmazione basato su pagine che semplifica e rende più produttiva la creazione dell'interfaccia utente Web. È consigliabile provare l'esercitazione sulle pagine Razor prima della versione MVC. L'esercitazione sulle pagine Razor:

  • È più semplice da seguire.
  • Riguarda più funzionalità.
  • È l'approccio preferito per lo sviluppo di nuove app.

Creazione di una stringa di connessione e uso di SQL Server LocalDB

La MovieDBContext classe creata gestisce l'attività di connessione al database e il mapping Movie degli oggetti ai record di database. Una domanda a cui è possibile porre, tuttavia, è come specificare il database a cui si connetterà. In realtà non è necessario specificare il database da usare. Per impostazione predefinita, Entity Framework userà LocalDB. In questa sezione verrà aggiunta in modo esplicito una stringa di connessione nel file Web.config dell'applicazione.

SQL Server Express LocalDB

LocalDB è una versione leggera del motore di database di SQL Server Express che viene avviata su richiesta ed eseguita in modalità utente. LocalDB viene eseguito in una modalità di esecuzione speciale di SQL Server Express che consente di usare i database come file mdf. In genere, i file di database LocalDB vengono conservati nella cartella App_Data di un progetto Web.

SQL Server Express non è consigliato per l'uso nelle applicazioni Web di produzione. LocalDB in particolare non deve essere usato per l'ambiente di produzione con un'applicazione Web perché non è progettato per funzionare con IIS. Tuttavia, è possibile eseguire facilmente la migrazione di un database LocalDB a SQL Server o SQL Azure.

In Visual Studio 2017 LocalDB viene installato per impostazione predefinita con Visual Studio.

Per impostazione predefinita, Entity Framework cerca una stringa di connessione denominata uguale alla classe di contesto dell'oggetto (MovieDBContext per questo progetto). Per altre informazioni, vedere SQL Server stringhe di connessione per le applicazioni Web di ASP.NET.

Aprire il file radice dell'applicazione Web.config illustrato di seguito. Non il file Web.config nella cartella Views .

Screenshot che mostra la finestra di Esplora soluzioni e la configurazione del punto Web è selezionata e cerchiata in rosso.

Trovare l'elemento <connectionStrings> :

Screenshot che mostra il codice e l'elemento della stringa di connessione è in rosso.

Aggiungere la stringa di connessione seguente all'elemento <connectionStrings> nel file 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" 
/>

L'esempio seguente mostra una parte del file Web.config con la nuova stringa di connessione aggiunta:

<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>

Le due stringhe di connessione sono molto simili. La prima stringa di connessione viene denominata DefaultConnection e viene usata per il database di appartenenza per controllare chi può accedere all'applicazione. La stringa di connessione aggiunta specifica un database LocalDB denominato Movie.mdf che si trova nella cartella App_Data . In questa esercitazione non verrà usato il database di appartenenza. Per altre informazioni sull'appartenenza, l'autenticazione e la sicurezza, vedere l'esercitazione Creare un'app MVC ASP.NET con autenticazione e database SQL e distribuirla in Servizio app di Azure.

Il nome della stringa di connessione deve corrispondere al nome della classe 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; }
    }
}

In realtà non è necessario aggiungere la MovieDBContext stringa di connessione. Se non si specifica una stringa di connessione, Entity Framework creerà un database LocalDB nella directory users con il nome completo della classe DbContext (in questo caso MvcMovie.Models.MovieDBContext). È possibile assegnare un nome al database a qualsiasi elemento desiderato, purché contenga . Suffisso MDF. Ad esempio, è possibile denominare il database MyFilms.mdf.

Successivamente, creerai una nuova MoviesController classe che puoi usare per visualizzare i dati del film e consentire agli utenti di creare nuove presentazioni di film.