Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
av Tom Dykstra
Den här självstudieserien visar hur du distribuerar (publicerar) en ASP.NET webbapp till Azure App Service Web Apps eller till en tredjepartsvärdleverantör med hjälp av Visual Studio 2012 eller Visual Studio 2010. Information om serien finns i den första självstudien i serien.
Översikt
I den här självstudien gör du en databasändring och relaterade kodändringar, testar ändringarna i Visual Studio och distribuerar sedan uppdateringen till test-, mellanlagrings- och produktionsmiljöerna.
Självstudien visar först hur du uppdaterar en databas som hanteras av Code First Migrations och senare visar den hur du uppdaterar en databas med hjälp av dbDacFx-providern.
Påminnelse: Om du får ett felmeddelande eller om något inte fungerar under genomgången av självstudien, bör du kontrollera felsökningssidan.
Distribuera en databasuppdatering med hjälp av Code First Migrations
I det här avsnittet lägger du till en födelsedatumkolumn i Person basklassen för entiteterna Student och Instructor . Sedan uppdaterar du sidan som visar lärardata så att den visar den nya kolumnen. Slutligen distribuerar du ändringarna till test, stage och produktion.
Lägga till en kolumn i en tabell i programdatabasen
I projektet ContosoUniversity.DAL öppna Person.cs och lägg till följande egenskap i slutet av klassen
Person(det bör finnas två avslutande klammerparenteser som följer):[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)] [Display(Name = "Birth Date")] public DateTime? BirthDate { get; set; }SeedUppdatera sedan metoden så att den ger ett värde för den nya kolumnen. Öppna Migreringar\Configuration.cs och ersätt kodblocket som börjarvar instructors = new List<Instructor>med följande kodblock som innehåller information om födelsedatum: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") } };Skapa lösningen och öppna sedan fönstret Package Manager Console . Kontrollera att ContosoUniversity.DAL fortfarande är valt som standardprojekt.
I fönstret Package Manager-konsolen väljer du ContosoUniversity.DAL som standardprojekt och anger sedan följande kommando:
add-migration AddBirthDateNär det här kommandot är klart öppnar Visual Studio klassfilen som definierar den nya
DbMigrationklassen, och iUpmetoden kan du se koden som skapar den nya kolumnen. MetodenUpskapar kolumnen när du implementerar ändringen ochDownmetoden tar bort kolumnen när du återställer ändringen.
Skapa lösningen och ange sedan följande kommando i fönstret Package Manager Console (kontrollera att ContosoUniversity.DAL-projektet fortfarande är markerat):
update-databaseEntity Framework kör
Up-metoden och sedanSeed-metoden.
Visa den nya kolumnen på sidan Lärare
I ContosoUniversity-projektet, öppna Instructors.aspx och lägg till ett nytt mallfält för att visa födelsedatum. Lägg till den mellan dem för anställningsdatum och kontorstilldelning:
<asp:TemplateField HeaderText="Hire Date" SortExpression="HireDate"> <ItemTemplate> <asp:Label ID="InstructorHireDateLabel" runat="server" Text='<%# Eval("HireDate", "{0:d}") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="InstructorHireDateTextBox" runat="server" Text='<%# Bind("HireDate", "{0:d}") %>' Width="7em"></asp:TextBox> </EditItemTemplate> </asp:TemplateField> <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> <asp:TemplateField HeaderText="Office Assignment" SortExpression="OfficeAssignment.Location"> <ItemTemplate> <asp:Label ID="InstructorOfficeLabel" runat="server" Text='<%# Eval("OfficeAssignment.Location") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="InstructorOfficeTextBox" runat="server" Text='<%# Eval("OfficeAssignment.Location") %>' Width="7em" OnInit="InstructorOfficeTextBox_Init"></asp:TextBox> </EditItemTemplate> </asp:TemplateField>(Om kodindraget blir osynkroniserat kan du trycka på CTRL-K och sedan CTRL-D för att automatiskt formatera om filen.)
Kör programmet och klicka på länken Instruktörer .
När sidan läses in ser du att det finns ett nytt fält för födelsedatum.
Stäng webbläsaren.
Distribuera databasuppdateringen
I Solution Explorer väljer du projektet ContosoUniversity.
I verktygsfältet Web One Click Publish (Publicera på webben) klickar du på testpubliceringsprofilen och klickar sedan på Publicera webbplats. (Om verktygsfältet är inaktiverat väljer du projektet ContosoUniversity i Solution Explorer.)
Visual Studio distribuerar det uppdaterade programmet och webbläsaren öppnas på startsidan.
Kör sidan Instruktörer för att kontrollera att uppdateringen har distribuerats.
När programmet försöker komma åt databasen för den här sidan uppdaterar Code First databasschemat och kör
Seedmetoden. När sidan visas ser du den förväntade kolumnen Födelsedatum med datum i den.I verktygsfältet Web One Click Publish (Publicera på webben) klickar du på publiceringsprofilen Staging och klickar sedan på Publicera webbplats.
Kör sidan Instruktörer i stagingmiljön för att kontrollera att uppdateringen har distribuerats.
I verktygsfältet Web One Click Publish (Publicera på webben ) klickar du på publiceringsprofilen Produktion och klickar sedan på Publicera webb.
Kör sidan Instruktörer i produktion för att verifiera att uppdateringen har framgångsrikt distribuerats.
För en verklig produktionsprogramuppdatering som innehåller en databasändring tar du vanligtvis programmet offline under distributionen med hjälp av app_offline.htm, som du såg i föregående självstudie.
Distribuera en databasuppdatering med hjälp av dbDacFx-providern
I det här avsnittet lägger du till kolumnen Kommentarer i tabellen Användare i medlemskapsdatabasen och skapar en sida där du kan visa och redigera kommentarer för varje användare. Sedan distribuerar du ändringarna för att testa, mellanlagring och produktion.
Lägga till en kolumn i en tabell i medlemskapsdatabasen
Öppna SQL Server Object Explorer i Visual Studio.
Expandera (localdb)\v11.0, expandera Databaser, expandera aspnet-ContosoUniversity (inte aspnet-ContosoUniversity-Prod) och expandera sedan Tabeller.
Om du inte ser (localdb)\v11.0 under SQL Server-noden högerklickar du på SQL Server-noden och klickar på Lägg till SQL Server. I dialogrutan Anslut till server anger du (localdb)\v11.0 som servernamn och klickar sedan på Anslut.
Om du inte ser aspnet-ContosoUniversity kör du projektet och loggar in med administratörsautentiseringsuppgifterna (lösenordet är devpwd) och uppdaterar sedan fönstret SQL Server Object Explorer.
Högerklicka på tabellen Användare och klicka sedan på Visa designer.
I designern lägger du till en kommentarskolumn och gör den till nvarchar(128) och nullbar och klickar sedan på Uppdatera.
I rutan Förhandsversion av databasuppdateringar klickar du på Uppdatera databas.
Skapa en sida för att visa och redigera den nya kolumnen
Högerklicka på mappen Konto i ContosoUniversity-projektet i Solution Explorer, klicka på Lägg till och klicka sedan på Nytt objekt.
Skapa ett nytt webbformulär med hjälp av huvudsidan och ge det namnet UserInfo.aspx. Acceptera standardfilen Site.Master som huvudsida.
Kopiera följande markering till elementet
MainContentContent(det sista av de treContentelementen):<h2>User Information</h2> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" SelectCommand="SELECT UserId, UserName, Comments FROM [Users]" UpdateCommand="UPDATE [Users] SET [UserName] = @UserName, [Comments] = @Comments WHERE [UserId] = @UserId"> <DeleteParameters> <asp:Parameter Name="UserId" Type="Object" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="UserId" Type="Object" /> <asp:Parameter Name="UserName" Type="String" /> <asp:Parameter Name="Comments" Type="String" /> </UpdateParameters> </asp:SqlDataSource> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="UserId" DataSourceID="SqlDataSource1"> <Columns> <asp:CommandField ShowEditButton="True" /> <asp:BoundField DataField="UserName" HeaderText="UserName" SortExpression="UserName" /> <asp:BoundField DataField="Comments" HeaderText="Comments" SortExpression="Comments" /> </Columns> </asp:GridView>Högerklicka på sidan UserInfo.aspx och klicka på Visa i webbläsare.
Logga in med dina autentiseringsuppgifter för administratörsanvändare (lösenordet är devpwd) och lägg till några kommentarer till en användare för att kontrollera att sidan fungerar korrekt.
Stäng webbläsaren.
Distribuera databasuppdateringen
Om du vill distribuera med hjälp av dbDacFx-providern behöver du bara välja alternativet Uppdatera databas i publiceringsprofilen. För den första distributionen när du använde det här alternativet konfigurerade du dock även några ytterligare SQL-skript att köra: de finns fortfarande i profilen och du måste förhindra att de körs igen.
Öppna guiden Publicera webb genom att högerklicka på ContosoUniversity-projektet och klicka på Publicera.
Välj testprofilen .
Klicka på fliken Inställningar .
Under DefaultConnection väljer du Uppdatera databas.
Inaktivera de ytterligare skript som du har konfigurerat att köra för den första distributionen:
- Klicka på Konfigurera databasuppdateringar.
- I dialogrutan Konfigurera databasuppdateringar avmarkerar du kryssrutorna bredvid Grant.sql och aspnet-data-dev.sql.
- Klicka på Stäng.
Klicka på fliken Förhandsversion .
Under Databaser och till höger om DefaultConnection klickar du på länken Förhandsgranskningsdatabas .
I förhandsgranskningsfönstret visas skriptet som ska köras i måldatabasen så att databasschemat matchar källdatabasens schema. Skriptet innehåller ett ALTER TABLE-kommando som lägger till den nya kolumnen.
Stäng dialogrutan Databasförhandsgranskning och klicka sedan på Publicera.
Visual Studio distribuerar det uppdaterade programmet och webbläsaren öppnas på startsidan.
Kör sidan UserInfo (lägg till Konto/UserInfo.aspx till startsidans URL) för att kontrollera att uppdateringen har distribuerats. Du måste logga in genom att ange administratör och devpwd.
Data i tabeller distribueras inte som standard och du har inte konfigurerat ett skript för datadistribution så du hittar inte kommentaren som du lade till under utveckling. Du kan lägga till en ny kommentar nu i mellanlagringen för att kontrollera att ändringen har distribuerats till databasen och att sidan fungerar korrekt.
Följ samma procedur för att distribuera till mellanlagring och produktion.
Glöm inte att inaktivera de extra skripten. Den enda skillnaden jämfört med testprofilen är att du endast inaktiverar ett skript i mellanlagrings- och produktionsprofilerna eftersom dessa profiler har konfigurerats för att endast köra aspnet-prod-data.sql.
Autentiseringsuppgifterna för testmiljö och produktion är admin och prodpwd.
För en verklig produktionsprogramuppdatering som innehåller en databasändring tar du vanligtvis programmet offline under distributionen genom att ladda upp app_offline.htm innan du publicerar och tar bort det efteråt, som du såg i föregående självstudie.
Sammanfattning
Nu har du distribuerat en programuppdatering som inkluderade en databasändring med både Code First Migrations och dbDacFx-providern.
Nästa handledning visar hur du utför distributioner med hjälp av kommandoraden.