Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Autor: Tom Dykstra
W tej serii samouczków pokazano, jak wdrożyć (opublikować) aplikację internetową ASP.NET do usługi Azure App Service Web Apps lub do dostawcy hostingu innej firmy, korzystając z programu Visual Studio 2012 lub Visual Studio 2010. Aby uzyskać informacje o serii, zobacz pierwszy samouczek z serii.
Omówienie
W tym samouczku wprowadzisz zmianę bazy danych i powiązane zmiany kodu, przetestujesz zmiany w programie Visual Studio, a następnie wdrożysz aktualizację w środowiskach testowych, przejściowych i produkcyjnych.
W samouczku najpierw pokazano, jak zaktualizować bazę danych zarządzaną przez Migracje Code First, a następnie pokazano, jak zaktualizować bazę danych przy użyciu dostawcy dbDacFx.
Przypomnienie: Jeśli zostanie wyświetlony komunikat o błędzie lub coś nie działa podczas pracy z samouczkiem, pamiętaj, aby sprawdzić stronę rozwiązywania problemów.
Wdróż aktualizację bazy danych przy użyciu Code First Migrations
W tej sekcji dodasz kolumnę daty urodzenia do klasy bazowej Person dla jednostek Student i Instructor . Następnie zaktualizujesz stronę wyświetlającą dane instruktora, tak aby wyświetlała nową kolumnę. Na koniec wdrażasz zmiany w środowisku testowym, stagingowym oraz produkcyjnym.
Dodawanie kolumny do tabeli w bazie danych aplikacji
W projekcie ContosoUniversity.DAL otwórz Person.cs i dodaj następującą właściwość na końcu klasy (na końcu
Personklasy powinny znajdować się dwa zamykające nawiasy klamrowe:[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)] [Display(Name = "Birth Date")] public DateTime? BirthDate { get; set; }Następnie zaktualizuj metodę
Seed, aby zapewnić jej wartość dla nowej kolumny. Otwórz plik Migrations\Configuration.cs i zastąp blok kodu rozpoczynający sięvar instructors = new List<Instructor>następującym blokiem kodu zawierającym informacje o dacie urodzenia: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") } };Skompiluj rozwiązanie, a następnie otwórz okno konsoli Menedżer pakietów. Upewnij się, że opcja ContosoUniversity.DAL jest nadal zaznaczona jako projekt domyślny.
W oknie konsoli Menedżer pakietów wybierz pozycję ContosoUniversity.DAL jako projekt domyślny, a następnie wprowadź następujące polecenie:
add-migration AddBirthDatePo zakończeniu tego polecenia program Visual Studio otwiera plik klasy definiujący nową
DbMigrationklasę, a wUpmetodzie można zobaczyć kod, który tworzy nową kolumnę. MetodaUptworzy kolumnę podczas implementowania zmiany, aDownmetoda usuwa kolumnę podczas wycofywania zmiany.
Skompiluj rozwiązanie, a następnie wprowadź następujące polecenie w oknie konsoli Menedżer pakietów (upewnij się, że projekt ContosoUniversity.DAL jest nadal zaznaczony):
update-databaseProgram Entity Framework uruchamia metodę
Up, a następnie uruchamia metodęSeed.
Wyświetlanie nowej kolumny na stronie Instruktorzy
W projekcie ContosoUniversity otwórz Instructors.aspx i dodaj nowe pole szablonu, aby wyświetlić datę urodzenia. Dodaj go między tymi, które dotyczą daty zatrudnienia i przypisania biura.
<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>(Jeśli wcięcie kodu traci synchronizację, możesz nacisnąć CTRL-K, a następnie CTRL-D, aby automatycznie zreformatować plik.)
Uruchom aplikację i kliknij link Instruktorzy .
Po załadowaniu strony zobaczysz, że ma ono nowe pole daty urodzenia.
Zamknij okno przeglądarki.
Wdrażanie aktualizacji bazy danych
W Eksplorator rozwiązań wybierz projekt ContosoUniversity.
Na pasku narzędzi Publikowanie jednym kliknięciem w sieci Web kliknij profil publikowania testowego, a następnie kliknij pozycję Publikuj w Sieci Web. (Jeśli pasek narzędzi jest wyłączony, wybierz projekt ContosoUniversity w Eksplorator rozwiązań.)
Program Visual Studio wdraża zaktualizowaną aplikację, a przeglądarka zostanie otwarta na stronie głównej.
Uruchom stronę Instruktorzy, w celu weryfikacji, czy aktualizacja została pomyślnie zastosowana.
Gdy aplikacja próbuje uzyskać dostęp do bazy danych dla tej strony, Code First aktualizuje schemat bazy danych i uruchamia metodę
Seed. Po wyświetleniu strony zobaczysz oczekiwaną kolumnę Data urodzenia z datami w niej.Na pasku narzędzi Web One Click Publish kliknij profil publikowania Staging, a następnie kliknij Publikuj w sieci Web.
Uruchom stronę Instruktorzy na etapie przejściowym, aby sprawdzić, czy aktualizacja została pomyślnie wdrożona.
Na pasku narzędzi Web One Click Publish , kliknij profil publikacjiProduction i kliknijPublikuj w sieci Web .Uruchom stronę Instruktorzy w środowisku produkcyjnym, aby sprawdzić, czy aktualizacja została pomyślnie wdrożona.
W przypadku rzeczywistej aktualizacji aplikacji produkcyjnej, która obejmuje zmianę bazy danych, zazwyczaj należy przełączyć aplikację w tryb offline podczas wdrażania, używając app_offline.htm, tak jak widziałeś w poprzednim samouczku.
Wdrażanie aktualizacji bazy danych przy użyciu dostawcy dbDacFx
W tej sekcji dodasz kolumnę Komentarze do tabeli User w bazie danych członkostwa i utworzysz stronę umożliwiającą wyświetlanie i edytowanie komentarzy dla każdego użytkownika. Następnie wdrażasz zmiany do środowisk testowego, przejściowego i produkcyjnego.
Dodawanie kolumny do tabeli w bazie danych członkostwa
W programie Visual Studio otwórz Eksplorator obiektów programu SQL Server.
Rozwiń (localdb)\v11.0, rozwiń Bazy danych, rozwiń aspnet-ContosoUniversity (nie aspnet-ContosoUniversity-Prod), a następnie rozwiń Tabele.
Jeśli nie widzisz (localdb)\v11.0 w węźle programu SQL Server , kliknij prawym przyciskiem myszy węzeł programu SQL Server i kliknij polecenie Dodaj program SQL Server. W oknie dialogowym Łączenie z serwerem wprowadź wartość (localdb)\v11.0 jako nazwę serwera, a następnie kliknij przycisk Połącz.
Jeśli nie widzisz elementu aspnet-ContosoUniversity, uruchom projekt i zaloguj się przy użyciu poświadczeń administratora (hasło jest devpwd), a następnie odśwież okno Eksplorator obiektów programu SQL Server.
Kliknij prawym przyciskiem myszy tabelę Użytkownicy, a następnie kliknij pozycję Projektant widoków.
W projektancie dodaj kolumnę Komentarze i ustaw ją na nvarchar(128) i null, a następnie kliknij przycisk Aktualizuj.
W polu Aktualizacje bazy danych w wersji zapoznawczej kliknij pozycję Aktualizuj bazę danych.
Tworzenie strony do wyświetlania i edytowania nowej kolumny
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy folder Account w projekcie ContosoUniversity, kliknij pozycję Dodaj, a następnie kliknij pozycję Nowy element.
Utwórz nowy formularz sieci Web przy użyciu strony wzorcowej i nadaj jej nazwę UserInfo.aspx. Zaakceptuj domyślny plik Site.Master jako stronę wzorcową.
Skopiuj następujący znacznik do
MainContentContentelementu (ostatnie z 3Contentelementów):<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>Kliknij prawym przyciskiem myszy stronę UserInfo.aspx i kliknij polecenie Wyświetl w przeglądarce.
Zaloguj się przy użyciu poświadczeń użytkownika administratora (hasło jest devpwd) i dodaj kilka komentarzy do użytkownika, aby sprawdzić, czy strona działa poprawnie.
Zamknij okno przeglądarki.
Wdrażanie aktualizacji bazy danych
Aby wdrożyć przy użyciu dostawcy dbDacFx, wystarczy wybrać opcję Aktualizuj bazę danych w profilu publikowania. Jednak w przypadku początkowego wdrożenia podczas korzystania z tej opcji skonfigurowano również kilka dodatkowych skryptów SQL do uruchomienia: nadal znajdują się one w profilu i trzeba będzie zapobiec ich ponownemu uruchomieniu.
Otwórz Kreatora publikowania w sieci Web, klikając prawym przyciskiem myszy na projekt ContosoUniversity i wybierając Publikuj.
Wybierz profil testowy.
Kliknij kartę Ustawienia.
W obszarze DomyślnePołączenie wybierz pozycję Aktualizuj bazę danych.
Wyłącz dodatkowe skrypty skonfigurowane do uruchamiania na potrzeby początkowego wdrożenia:
- Kliknij pozycję Konfiguruj aktualizacje bazy danych.
- W oknie dialogowym Konfigurowanie aktualizacji bazy danych wyczyść pola wyboru obok Grant.sql i aspnet-data-dev.sql.
- Kliknij przycisk Zamknij.
Kliknij kartę Podgląd .
W obszarze Bazy danych i po prawej stronie DefaultConnection kliknij link Podgląd bazy danych.
W oknie podglądu zostanie wyświetlony skrypt, który zostanie uruchomiony w docelowej bazie danych, aby schemat tej bazy danych był zgodny ze schematem źródłowej bazy danych. Skrypt zawiera polecenie ALTER TABLE, które dodaje nową kolumnę.
Zamknij okno dialogowe Podgląd bazy danych, a następnie kliknij przycisk Publikuj.
Program Visual Studio wdraża zaktualizowaną aplikację, a przeglądarka zostanie otwarta na stronie głównej.
Uruchom stronę UserInfo (dodaj konto/UserInfo.aspx do adresu URL strony głównej), aby sprawdzić, czy aktualizacja została pomyślnie wdrożona. Musisz się zalogować, wprowadzając ciąg admin i devpwd.
Dane w tabelach domyślnie nie są wdrażane, i nie skonfigurowałeś skryptu wdrażania danych do uruchomienia się, więc nie znajdziesz komentarza, który dodałeś podczas programowania. Możesz teraz dodać nowy komentarz w środowisku przejściowym, aby sprawdzić, czy zmiana została wdrożona w bazie danych, a strona działa poprawnie.
Postępuj zgodnie z tą samą procedurą, aby wdrożyć w środowisku testowym i produkcyjnym.
Nie zapomnij wyłączyć dodatkowych skryptów. Jedyną różnicą w porównaniu z profilem testowym jest wyłączenie tylko jednego skryptu w profilach przejściowych i produkcyjnych, ponieważ zostały skonfigurowane do uruchamiania tylko aspnet-prod-data.sql.
Poświadczenia dla środowiska przejściowego i produkcyjnego to administrator i prodpwd.
W przypadku rzeczywistej aktualizacji aplikacji produkcyjnej, która obejmuje zmianę bazy danych, zazwyczaj należy przełączyć aplikację w tryb offline podczas wdrażania, przesyłając app_offline.htm przed opublikowaniem, a następnie usuwając ją, jak pokazano w poprzednim samouczku.
Podsumowanie
Właśnie wdrożyłeś aktualizację aplikacji, która zawierała zmianę bazy danych przy użyciu zarówno migracji Code First, jak i dostawcy dbDacFx.
W następnym samouczku przedstawiono sposób wykonywania wdrożeń przy użyciu wiersza polecenia.