Udostępnij za pośrednictwem


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

Pobierz projekt startowy

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.

Instructors_page_with_office_hours

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.

Instructors_page_with_OfficeHours_Test

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.

Selecting_Cytanium_connection_string

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.

Instructors_page_with_OfficeHours_Prod

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: