Wdrażanie aplikacji internetowej ASP.NET przy użyciu SQL Server Compact przy użyciu programu Visual Studio lub Visual Web Developer: wdrażanie aktualizacji bazy danych SQL Server — 11 z 12
Autor : Tom Dykstra
W tej serii samouczków pokazano, jak wdrożyć (opublikować) projekt aplikacji internetowej ASP.NET zawierający bazę danych SQL Server Compact przy użyciu programu Visual Studio 2012 RC lub Visual Studio Express 2012 RC for Web. Możesz również użyć programu Visual Studio 2010, jeśli zainstalujesz aktualizację publikowania w sieci Web. Aby zapoznać się z wprowadzeniem do serii, zobacz pierwszy samouczek z serii.
Aby zapoznać się z samouczkiem przedstawiającym funkcje wdrażania wprowadzone po wersji RC programu Visual Studio 2012, pokazano, jak wdrożyć wersje SQL Server inne niż SQL Server Compact oraz pokazano, jak wdrożyć w witrynach sieci Web platformy Windows Azure, zobacz ASP.NET Wdrażanie w Internecie przy użyciu programu Visual Studio.
Omówienie
W tym samouczku pokazano, jak wdrożyć aktualizację bazy danych w pełnej SQL Server bazie danych. Ponieważ Migracje Code First wszystkie zadania związane z aktualizowaniem bazy danych, proces jest niemal identyczny z procesem SQL Server Compact w samouczku Wdrażanie aktualizacji bazy danych.
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.
Dodawanie nowej kolumny do tabeli
W tej sekcji samouczka wprowadzisz zmianę bazy danych i odpowiednie zmiany w kodzie, a następnie przetestujesz je w programie Visual Studio w ramach przygotowań do wdrożenia ich w środowiskach testowych i produkcyjnych. Zmiana obejmuje dodanie OfficeHours
kolumny do Instructor
jednostki i wyświetlenie nowych informacji na stronie internetowej Instruktorzy .
W projekcie ContosoUniversity.DAL otwórz Instructor.cs i dodaj następującą właściwość między właściwościami HireDate
i Courses
:
[MaxLength(50)]
public string OfficeHours { get; set; }
Zaktualizuj klasę inicjatora, tak aby rozsiała nową kolumnę przy użyciu danych testowych. 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 nową kolumnę:
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" }
};
W projekcie ContosoUniversity otwórz Instructors.aspx i dodaj nowe pole szablonu dla godzin pracy tuż przed tagiem zamykającym </Columns>
w pierwszej GridView
kontrolce:
<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>
Skompiluj rozwiązanie.
Otwórz okno Konsola menedżera pakietów i wybierz pozycję ContosoUniversity.DAL jako projekt domyślny.
Wprowadź następujące polecenia:
add-migration AddOfficeHoursColumn
update-database
Uruchom aplikację i wybierz stronę Instruktorzy . Ładowanie strony trwa nieco dłużej niż zwykle, ponieważ program Entity Framework ponownie tworzy bazę danych i za pomocą danych testowych.
Wdrażanie aktualizacji bazy danych w środowisku testowym
W przypadku używania Migracje Code First metoda wdrażania zmiany bazy danych w SQL Server jest taka sama jak w przypadku SQL Server Compact. Należy jednak zmienić profil publikowania testowego, ponieważ nadal jest skonfigurowany do migracji z SQL Server Compact do SQL Server.
Pierwszym krokiem jest usunięcie parametry połączenia przekształceń utworzonych w poprzednim samouczku. Nie są one już potrzebne, ponieważ określisz parametry połączenia przekształcenia w profilu publikowania, tak jak wcześniej skonfigurowano kartę Package/Publish SQL na potrzeby migracji do SQL Server.
Otwórz plik Web.Test.config i usuń connectionStrings
element . Jedyną pozostałą transformacją w pliku Web.Test.config jest Environment
wartość w elemecie appSettings
.
Teraz możesz zaktualizować profil publikowania i opublikować go w środowisku testowym.
Otwórz kreatora Publikowanie w sieci Web , a następnie przejdź do karty Profil .
Wybierz profil publikowania testowego .
Wybierz kartę Ustawienia.
Kliknij pozycję Włącz ulepszenia publikowania nowej bazy danych.
W polu parametry połączenia schoolContext wprowadź tę samą wartość, która była używana w pliku przekształcenia Web.Test.config w poprzednim samouczku:
Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True
Wybierz pozycję Wykonaj Migracje Code First (uruchamiane przy uruchomieniu aplikacji). (W twojej wersji programu Visual Studio pole wyboru może mieć etykietę Zastosuj Migracje Code First).
W polu parametry połączenia w polu DefaultConnection wprowadź tę samą wartość, która była używana w pliku przekształcenia Web.Test.config w poprzednim samouczku:
Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True
Pozostaw pole Aktualizuj bazę danych wyczyszczone.
Kliknij przycisk Opublikuj.
Program Visual Studio wdraża zmiany kodu w środowisku testowym i otwiera przeglądarkę na stronie głównej platformy Contoso University.
Wybierz stronę Instruktorzy.
Gdy aplikacja uruchamia tę stronę, próbuje uzyskać dostęp do bazy danych. Migracje Code First sprawdza, czy baza danych jest aktualna, i stwierdza, że najnowsza migracja nie została jeszcze zastosowana. Migracje Code First stosuje najnowszą migrację, uruchamia metodę Seed
, a następnie strona działa normalnie. Zostanie wyświetlona nowa kolumna Godziny pracy z wstępnie wypełnionymi danymi.
Wdrażanie aktualizacji bazy danych w środowisku produkcyjnym
Należy również zmienić profil publikowania dla środowiska produkcyjnego. W takim przypadku usuniesz istniejący profil i utworzysz nowy, importując zaktualizowany plik publishsettings. Zaktualizowany plik będzie zawierać parametry połączenia dla bazy danych SQL Server w Cytanium.
Jak pokazano podczas wdrażania w środowisku testowym, nie trzeba już parametry połączenia przekształceń w pliku transformacjiWeb.Production.config. Otwórz ten plik i usuń connectionStrings
element . Pozostałe przekształcenia dotyczą Environment
wartości elementu appSettings
i location
elementu, który ogranicza dostęp do raportów o błędach Elmah.
Przed utworzeniem nowego profilu publikowania dla środowiska produkcyjnego pobierz zaktualizowany plik publishsettings w taki sam sposób, jak wcześniej w samouczku Wdrażanie w środowisku produkcyjnym . (W panelu sterowania Cytanium kliknij pozycję Witryny internetowe, a następnie kliknij witrynę internetową contosouniversity.com. Wybierz kartę Publikowanie w sieci Web, a następnie kliknij pozycję Pobierz profil publikowania dla tej witryny sieci Web. Przyczyną tego działania jest wybranie parametry połączenia bazy danych w pliku publishsettings. Parametry połączenia nie była dostępna podczas pierwszego pobrania pliku, ponieważ nadal używano SQL Server Compact i nie utworzono jeszcze bazy danych SQL Server w Cytanium.
Teraz możesz zaktualizować profil publikowania i opublikować go w środowisku produkcyjnym.
Otwórz kreatora Publikowanie w sieci Web , a następnie przejdź do karty Profil .
Kliknij pozycję Zarządzaj profilami, a następnie usuń profil produkcyjny.
Zamknij Kreatora publikowania w sieci Web , aby zapisać tę zmianę.
Otwórz ponownie Kreatora publikowania w sieci Web , a następnie kliknij przycisk Importuj.
Na karcie Połączenie zmień docelowy adres URL na odpowiednią wartość, jeśli używasz tymczasowego adresu URL.
Kliknij przycisk Dalej.
Na karcie Ustawienia kliknij pozycję Włącz nowe ulepszenia publikowania bazy danych.
Na liście rozwijanej parametry połączenia schoolContext wybierz parametry połączenia Cytanium.
Wybierz pozycję Wykonaj migracje Code First (uruchamiane przy uruchomieniu aplikacji).
Z listy rozwijanej parametry połączenia dla pozycji DefaultConnection wybierz parametry połączenia Cytanium.
Wybierz kartę Profil , kliknij pozycję Zarządzaj profilami i zmień nazwę profilu z "contosouniversity.com — Web Deploy" na "Produkcja".
Zamknij profil publikowania, aby zapisać zmianę, a następnie otwórz go ponownie.
Kliknij przycisk Opublikuj. (W przypadku rzeczywistej produkcyjnej witryny internetowej należy skopiować app_offline.htm do środowiska produkcyjnego i umieścić ją w folderze projektu przed opublikowaniem, a następnie usunąć po zakończeniu wdrażania).
Program Visual Studio wdraża zmiany kodu w środowisku testowym i otwiera przeglądarkę na stronie głównej platformy Contoso University.
Wybierz stronę Instruktorzy.
Migracje Code First aktualizuje bazę danych tak samo jak w środowisku testowym. Zostanie wyświetlona nowa kolumna Godziny pracy z wstępnie wypełnionymi danymi.
Teraz pomyślnie wdrożono aktualizację aplikacji, która zawierała zmianę bazy danych przy użyciu bazy danych SQL Server.
Więcej informacji
Ta seria samouczków obejmuje wdrażanie aplikacji internetowej ASP.NET u dostawcy hostingu innej firmy. Aby uzyskać więcej informacji na temat dowolnych tematów omówionych w tych samouczkach, zobacz ASP.NET mapa zawartości wdrożenia w witrynie sieci Web MSDN.
Podziękowania
Chciałbym podziękować następującym osobom, które wniosły znaczący wkład w zawartość tej serii samouczków:
- Alberto Poblacion, MVP & MCT, Hiszpania
- Jarod Ferguson, MVP rozwoju platformy danych, Stany Zjednoczone
- Ostre mittal, Microsoft
- Kristina Olson, Microsoft
- Mike Pope, Microsoft
- Mohit Srivastava, Microsoft
- Raffaele Rialdi, Włochy
- Rick Anderson, Microsoft
- Sayed Hashimi, Microsoft (twitter: @sayedihashimi)
- Scott Hanselman (twitter: @shanselman)
- Scott Hunter, Microsoft (twitter: @coolcsh)
- Srđan Božkov, Serbia
- Vishal Joshi, Microsoft (twitter: @vishalrjoshi)