Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 di pubblicazione Web. Per un'introduzione alla serie, vedere la prima esercitazione della serie.
Per un'esercitazione che illustra le funzionalità di distribuzione introdotte dopo la versione RC di Visual Studio 2012, illustra come distribuire edizioni di SQL Server diverse da SQL Server Compact e illustra come eseguire la distribuzione nelle app Web del servizio app di Azure, vedere ASP.NET distribuzione Web con Visual Studio.
Informazioni generali
In questa esercitazione si apportano modifiche al database e modifiche al codice correlate, si testano le modifiche in Visual Studio, quindi si distribuisce l'aggiornamento negli ambienti di test e di produzione.
Promemoria: se viene visualizzato un messaggio di errore o qualcosa 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 si aggiunge una colonna data di nascita alla Person classe base per le Student entità e Instructor . Aggiornare quindi la pagina in cui vengono visualizzati 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 classe Person (devono 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 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. Aggiungilo tra quelli relativi alla data di assunzione e all'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 riformattare 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.
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 Instructors (Insegnanti). Quando la pagina viene caricata, si noterà che contiene il nuovo campo data di nascita.
Distribuzione dell'aggiornamento del database nell'ambiente di test
In Esplora soluzioni selezionare il progetto ContosoUniversity.
Nella barra degli strumenti Web con 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 si apre nella home page. Esegui la pagina Instructors per verificare che l'aggiornamento sia stato implementato 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 le date.
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 Web Con un clic su Pubblica e fare clic su Pubblica web.
- Eliminare il file app_offline.htm dal sito di produzione.
Annotazioni
Mentre l'applicazione è in uso nell'ambiente di produzione, è consigliabile implementare un piano di backup. Ciò significa che è necessario copiare periodicamente i file School-Prod.sdf e aspnet-Prod.sdf dal sito di produzione in un percorso di archiviazione sicuro e mantenere diverse generazioni di tali backup. Quando si aggiorna il database, è necessario eseguire una copia di backup immediatamente prima della modifica. Quindi, se si commette un errore e non lo si individua fino a quando non viene distribuito nell'ambiente di produzione, sarà comunque possibile ripristinare lo stato in cui si trovava prima che fosse danneggiato.
Quando Visual Studio apre l'URL della home page nel browser, viene visualizzata la paginaapp_offline.htm . Dopo aver eliminato il fileapp_offline.htm , è possibile passare nuovamente alla home page per verificare che l'aggiornamento sia stato distribuito correttamente.
È stato ora distribuito un aggiornamento dell'applicazione che includeva una modifica del database sia per il test che per la produzione. L'esercitazione successiva illustra come eseguire la migrazione del database da SQL Server Compact a SQL Server Express e SQL Server.