Distribuzione di un'applicazione Web ASP.NET con SQL Server Compact tramite Visual Studio o Visual Web Developer: Distribuzione di un aggiornamento del database - 9 di 12

di Tom Dykstra

Scaricare il progetto iniziale

Questa serie di esercitazioni illustra come distribuire (pubblicare) un progetto di applicazione Web ASP.NET che include un database SQL Server Compact usando Visual Studio 2012 RC o Visual Studio Express 2012 RC per Web. È anche possibile usare Visual Studio 2010 se si installa l'aggiornamento pubblicazione Web. Per un'introduzione alla serie, vedere la prima esercitazione nella serie.

Per un'esercitazione che illustra le funzionalità di distribuzione introdotte dopo la versione RC di Visual Studio 2012, viene illustrato come distribuire edizioni SQL Server diverse da SQL Server Compact e viene illustrato come eseguire la distribuzione in Servizio app di Azure App Web, vedere ASP.NET distribuzione Web con Visual Studio.

Panoramica

In questa esercitazione viene apportata una modifica del database e le modifiche relative al codice, testare le modifiche in Visual Studio, quindi distribuire l'aggiornamento negli ambienti di test e di produzione.

Promemoria: se viene visualizzato un messaggio di errore o qualcosa che non funziona durante l'esercitazione, assicurarsi di controllare la pagina di risoluzione dei problemi.

Aggiunta di una nuova colonna a una tabella

In questa sezione viene aggiunta una colonna data di nascita alla Person classe di base per le Student entità e Instructor . Aggiornare quindi la pagina che visualizza i dati dell'insegnante in modo che visualizzi la nuova colonna.

Nel progetto ContosoUniversity.DAL aprire Person.cs e aggiungere la proprietà seguente alla fine della Person classe (dovrebbero essere presenti due parentesi graffe di chiusura seguenti):

[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
[Display(Name = "Birth Date")]
public DateTime? BirthDate { get; set; }

Aggiornare quindi il metodo Seed in modo che fornisca un valore per la nuova colonna. Aprire Migrations\Configuration.cs e sostituire il blocco di codice che inizia var instructors = new List<Instructor> con il blocco di codice seguente che include le informazioni sulla data di nascita:

var instructors = new List<Instructor>
{
    new Instructor { FirstMidName = "Kim",     LastName = "Abercrombie", HireDate = DateTime.Parse("1995-03-11"), BirthDate = DateTime.Parse("1918-08-12"), OfficeAssignment = new OfficeAssignment { Location = "Smith 17" } },
    new Instructor { FirstMidName = "Fadi",    LastName = "Fakhouri",    HireDate = DateTime.Parse("2002-07-06"), BirthDate = DateTime.Parse("1960-03-15"), OfficeAssignment = new OfficeAssignment { Location = "Gowan 27" } },
    new Instructor { FirstMidName = "Roger",   LastName = "Harui",       HireDate = DateTime.Parse("1998-07-01"), BirthDate = DateTime.Parse("1970-01-11"), OfficeAssignment = new OfficeAssignment { Location = "Thompson 304" } },
    new Instructor { FirstMidName = "Candace", LastName = "Kapoor",      HireDate = DateTime.Parse("2001-01-15"), BirthDate = DateTime.Parse("1975-04-11") },
    new Instructor { FirstMidName = "Roger",   LastName = "Zheng",       HireDate = DateTime.Parse("2004-02-12"), BirthDate = DateTime.Parse("1957-10-12") }
};

Nel progetto ContosoUniversity aprire Instructors.aspx e aggiungere un nuovo campo modello per visualizzare la data di nascita. Aggiungerlo tra quelli per la data di assunzione e l'assegnazione dell'ufficio:

<asp:TemplateField HeaderText="Birth Date" SortExpression="BirthDate">
    <ItemTemplate>
        <asp:Label ID="InstructorBirthDateLabel" runat="server" Text='<%# Eval("BirthDate", "{0:d}") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="InstructorBirthDateTextBox" runat="server" Text='<%# Bind("BirthDate", "{0:d}") %>'
            Width="7em"></asp:TextBox>
    </EditItemTemplate>
</asp:TemplateField>

Se il rientro del codice non viene sincronizzato, è possibile premere CTRL-K e quindi CTRL-D per riformatare automaticamente il file.

Compilare la soluzione e quindi aprire la finestra Console di Gestione pacchetti . Assicurarsi che ContosoUniversity.DAL sia ancora selezionato come progetto predefinito.

Nella finestra Console di Gestione pacchetti selezionare ContosoUniversity.DAL come progetto predefinito e quindi immettere il comando seguente:

add-migration AddBirthDate

Al termine di questo comando, Visual Studio apre il file di classe che definisce la nuova DbMigration classe e nel Up metodo è possibile visualizzare il codice che crea la nuova colonna.

AddBirthDate_migration_code

Compilare la soluzione e quindi immettere il comando seguente nella finestra Console di Gestione pacchetti (assicurarsi che il progetto ContosoUniversity.DAL sia ancora selezionato):

update-database

Al termine del comando, eseguire l'applicazione e selezionare la pagina Insegnanti. Quando la pagina viene caricata, viene visualizzata la nuova data di nascita.

Instructors_page_with_birth_date

Distribuzione dell'aggiornamento del database nell'ambiente di test

In Esplora soluzioni selezionare il progetto ContosoUniversity.

Nella barra degli strumenti Web Un clic su Pubblica selezionare il profilo di pubblicazione test e quindi fare clic su Pubblica Web. Se la barra degli strumenti è disabilitata, selezionare il progetto ContosoUniversity in Esplora soluzioni.

Visual Studio distribuisce l'applicazione aggiornata e il browser viene aperto nella home page. Eseguire la pagina Instructors per verificare che l'aggiornamento sia stato distribuito correttamente. Quando l'applicazione tenta di accedere al database per questa pagina, Code First aggiorna lo schema del database ed esegue il Seed metodo. Quando viene visualizzata la pagina, viene visualizzata la colonna Data di nascita prevista con date di nascita.

Instructors_page_with_birth_date_Test

Distribuzione dell'aggiornamento del database nell'ambiente di produzione

È ora possibile distribuire nell'ambiente di produzione. L'unica differenza è che si userà app_offline.htm per impedire agli utenti di accedere al sito e quindi aggiornare il database durante la distribuzione delle modifiche. Per la distribuzione di produzione seguire questa procedura:

  • Caricare il file app_offline.htm nel sito di produzione.
  • In Visual Studio scegliere il profilo di produzione nella barra degli strumenti Pubblica con un clic sul Web e fare clic su Pubblica Web.
  • Eliminare il file app_offline.htm dal sito di produzione.

Nota

Anche se l'applicazione è in uso nell'ambiente di produzione, è necessario implementare un piano di backup. È quindi consigliabile copiare periodicamente i file School-Prod.sdf e aspnet-Prod.sdf dal sito di produzione a un percorso di archiviazione sicuro e mantenere diverse generazioni di tali backup. Quando si aggiorna il database, è necessario eseguire una copia di backup da immediatamente prima della modifica. Se si fa un errore e non lo si individua fino a quando non è stato distribuito in produzione, sarà comunque possibile ripristinare il database allo stato in cui è stato danneggiato.

Quando Visual Studio apre l'URL della home page nel browser, viene visualizzata la pagina app_offline.htm . Dopo aver eliminato il file app_offline.htm , è possibile passare nuovamente alla home page per verificare che l'aggiornamento sia stato distribuito correttamente.

Instructors_page_with_birth_date_Prod

È stato ora distribuito un aggiornamento dell'applicazione che includeva una modifica del database sia in fase di test che in produzione. L'esercitazione successiva illustra come eseguire la migrazione del database da SQL Server Compact a SQL Server Express e SQL Server.