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 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 illustra come distribuire in Siti Web di Windows Azure, vedere ASP.NET distribuzione Web con Visual Studio.
Panoramica
Questa esercitazione illustra come distribuire un aggiornamento di database in un database completo SQL Server. Poiché Migrazioni Code First esegue tutte le operazioni di aggiornamento del database, il processo è quasi identico a quello che è stato fatto per SQL Server Compact nell'esercitazione Distribuzione di un aggiornamento del database.
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 dell'esercitazione verrà apportata una modifica del database e le modifiche del codice corrispondenti, quindi testarle in Visual Studio in preparazione per la distribuzione negli ambienti di test e produzione. La modifica comporta l'aggiunta di una OfficeHours
colonna all'entità Instructor
e la visualizzazione delle nuove informazioni nella pagina Web Instructors .
Nel progetto ContosoUniversity.DAL aprire Instructor.cs e aggiungere la proprietà seguente tra le HireDate
proprietà e Courses
:
[MaxLength(50)]
public string OfficeHours { get; set; }
Aggiornare la classe inizializzatore in modo che semi la nuova colonna con i dati di test. 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 la nuova colonna:
var instructors = new List<Instructor>
{
new Instructor { FirstMidName = "Kim", LastName = "Abercrombie", HireDate = DateTime.Parse("1995-03-11"), BirthDate = DateTime.Parse("1918-08-12"), OfficeHours = "8-9AM, 4-5PM", 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"), OfficeHours = "6AM-6PM", 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"), OfficeHours = "By appointment only" }
};
Nel progetto ContosoUniversity aprire Instructors.aspx e aggiungere un nuovo campo modello per le ore di ufficio appena prima del tag di chiusura </Columns>
nel primo GridView
controllo:
<asp:TemplateField HeaderText="Office Hours">
<ItemTemplate>
<asp:Label ID="InstructorOfficeHoursLabel" runat="server" Text='<%# Eval("OfficeHours") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="InstructorOfficeHoursTextBox" runat="server" Text='<%# Bind("OfficeHours") %>'
Width="14em"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
Compilare la soluzione.
Aprire la finestra Console di Gestione pacchetti e selezionare ContosoUniversity.DAL come progetto predefinito.
Immettere i comandi seguenti:
add-migration AddOfficeHoursColumn
update-database
Eseguire l'applicazione e selezionare la pagina Insegnanti . La pagina richiede un po' più di solito per il caricamento, perché Entity Framework crea nuovamente il database e lo semi con i dati di test.
Distribuzione dell'aggiornamento del database nell'ambiente di test
Quando si usa Migrazioni Code First, il metodo per la distribuzione di una modifica del database in SQL Server è uguale a quello per SQL Server Compact. Tuttavia, è necessario modificare il profilo di pubblicazione test perché è ancora configurato per eseguire la migrazione da SQL Server Compact a SQL Server.
Il primo passaggio consiste nel rimuovere le trasformazioni di stringa di connessione create nell'esercitazione precedente. Questi non sono più necessari perché si specificano stringa di connessione trasformazioni nel profilo di pubblicazione, come si è fatto prima di configurare la scheda Package/Publish SQL per la migrazione a SQL Server.
Aprire il file Web.Test.config e rimuovere l'elemento connectionStrings
. L'unica trasformazione rimanente nel file diWeb.Test.config è per il Environment
valore nell'elemento appSettings
.
È ora possibile aggiornare il profilo di pubblicazione e pubblicare nell'ambiente di test.
Aprire la Procedura guidata Pubblica Web e quindi passare alla scheda Profilo .
Selezionare il profilo di pubblicazione test .
Selezionare la scheda Settings (Impostazioni).
Fare clic su Abilita i nuovi miglioramenti alla pubblicazione del database.
Nella casella stringa di connessione per SchoolContext immettere lo stesso valore usato nel file di trasformazione Web.Test.config nell'esercitazione precedente:
Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True
Selezionare Esegui Migrazioni Code First (esecuzione all'avvio dell'applicazione). Nella versione di Visual Studio, la casella di controllo potrebbe essere etichettata Applica Migrazioni Code First.
Nella casella stringa di connessione per DefaultConnection immettere lo stesso valore usato nel file di trasformazione Web.Test.config nell'esercitazione precedente:
Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True
Lasciare deselezionato il database di aggiornamento .
Fare clic su Pubblica.
Visual Studio distribuisce le modifiche al codice nell'ambiente di test e apre il browser alla home page di Contoso University.
Selezionare la pagina Insegnanti.
Quando l'applicazione esegue questa pagina, tenta di accedere al database. Migrazioni Code First verifica se il database è corrente e rileva che la migrazione più recente non è ancora stata applicata. Migrazioni Code First applica la migrazione più recente, esegue il Seed
metodo e quindi la pagina viene eseguita normalmente. Viene visualizzata la nuova colonna Ore di Office con i dati di inizializzazione.
Distribuzione dell'aggiornamento del database nell'ambiente di produzione
È anche necessario modificare il profilo di pubblicazione per l'ambiente di produzione. In questo caso si rimuoverà il profilo esistente e ne verrà creato uno nuovo importando un file con estensione publishsettings aggiornato. Il file aggiornato includerà il stringa di connessione per il database SQL Server a Cytanium.
Come si è visto quando è stato distribuito nell'ambiente di test, non è più necessario stringa di connessione trasformazioni nel file di trasformazione Web.Production.config. Aprire il file e rimuovere l'elemento connectionStrings
. Le trasformazioni rimanenti sono per il Environment
valore nell'elemento e l'elemento location
che limita l'accesso appSettings
ai report degli errori Elmah.
Prima di creare un nuovo profilo di pubblicazione per l'ambiente di produzione, scaricare un file con estensione publishsettings aggiornato nello stesso modo in cui è stato eseguito in precedenza nell'esercitazione Distribuzione nell'ambiente di produzione . Nel pannello di controllo Cytanium fare clic su Siti Web e quindi fare clic sul sito Web contosouniversity.com. Selezionare la scheda Pubblicazione Web e quindi fare clic su Scarica profilo di pubblicazione per questo sito Web. Il motivo per cui si sta eseguendo questa operazione consiste nel selezionare il database stringa di connessione nel file con estensione publishsettings. La stringa di connessione non è stata disponibile la prima volta che è stato scaricato il file, perché si usa ancora SQL Server Compact e non è stato ancora creato il database SQL Server in Cytanium.
È ora possibile aggiornare il profilo di pubblicazione e pubblicare nell'ambiente di produzione.
Aprire la Procedura guidata Pubblica Web e quindi passare alla scheda Profilo .
Fare clic su Gestisci profili e quindi eliminare il profilo di produzione.
Chiudere la procedura guidata Pubblica Web per salvare questa modifica.
Aprire di nuovo la Procedura guidata Pubblica Web e quindi fare clic su Importa.
Nella scheda Connessione modificare l'URL di destinazione nel valore appropriato se si usa un URL temporaneo.
Fare clic su Avanti.
Nella scheda Impostazioni fare clic su Abilita i nuovi miglioramenti della pubblicazione del database.
Nell'elenco a discesa stringa di connessione per SchoolContext selezionare l'stringa di connessione Cytanium.
Selezionare Esegui prima migrazione del codice (eseguita all'avvio dell'applicazione).
Nell'elenco a discesa stringa di connessione per DefaultConnection selezionare l'stringa di connessione Cytanium.
Selezionare la scheda Profilo , fare clic su Gestisci profili e rinominare il profilo da "contosouniversity.com - Distribuzione Web" a "Produzione".
Chiudere il profilo di pubblicazione per salvare la modifica, quindi aprirlo di nuovo.
Fare clic su Pubblica. Per un sito Web di produzione reale, copiare app_offline.htm in produzione e inserirlo nella cartella del progetto prima della pubblicazione, quindi rimuoverlo al termine della distribuzione.
Visual Studio distribuisce le modifiche al codice nell'ambiente di test e apre il browser alla home page di Contoso University.
Selezionare la pagina Insegnanti.
Migrazioni Code First aggiorna il database allo stesso modo in cui è stato eseguito nell'ambiente di test. Viene visualizzata la nuova colonna Ore di Office con i dati di inizializzazione.
È stato ora distribuito correttamente un aggiornamento dell'applicazione che includeva una modifica del database usando un database SQL Server.
Altre informazioni
Questa serie di esercitazioni viene completata sulla distribuzione di un'applicazione Web ASP.NET a un provider di hosting di terze parti. Per altre informazioni su uno degli argomenti descritti in queste esercitazioni, vedere la ASP.NET Mappa contenuto distribuzione nel sito Web MSDN.
Riconoscimenti
Vorrei ringraziare le persone seguenti che hanno contribuito significativamente al contenuto di questa serie di esercitazioni:
- Alberto Poblacion, MVP & MCT, Spagna
- Jarod Ferguson, MVP di sviluppo della piattaforma dati, Stati Uniti
- Duro Mittal, Microsoft
- Kristina Olson, Microsoft
- Mike Pope, Microsoft
- Mohit Srivastava, Microsoft
- Raffaele Rialdi, Italia
- Rick Anderson, Microsoft
- Sayed Hashimi, Microsoft(twitter: @sayedihashimi)
- Scott Hanselman (twitter: @shanselman)
- Scott Hunter, Microsoft (twitter: @coolcsh)
- Srđan Božović, Serbia
- Vishal Joshi, Microsoft (twitter: @vishalrjoshi)