Udostępnij za pośrednictwem


Wdrażanie aplikacji internetowej ASP.NET z SQL Server Compact przy użyciu programu Visual Studio lub Visual Web Developer: wdrażanie baz danych SQL Server Compact — 2 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.

W samouczku przedstawiającym funkcje wdrażania wprowadzone po wersji RC programu Visual Studio 2012 przedstawiono sposób wdrażania wersji SQL Server innych niż SQL Server Compact oraz pokazano, jak wdrożyć w Azure App Service Web Apps, zobacz temat ASP.NET Web Deployment using Visual Studio (Wdrażanie w internecie przy użyciu programu Visual Studio).

Omówienie

W tym samouczku pokazano, jak skonfigurować dwie SQL Server Compact bazy danych i aparat bazy danych do wdrożenia.

W przypadku dostępu do bazy danych aplikacja Contoso University wymaga następującego oprogramowania, które musi zostać wdrożone z aplikacją, ponieważ nie jest ona uwzględniona w .NET Framework:

Struktura bazy danych i niektóre (nie wszystkie) dane w dwóch bazach danych aplikacji również muszą zostać wdrożone. Zazwyczaj podczas tworzenia aplikacji wprowadzasz dane testowe do bazy danych, której nie chcesz wdrażać w lokacji na żywo. Możesz jednak również wprowadzić pewne dane produkcyjne, które chcesz wdrożyć. W tym samouczku skonfigurujesz projekt Contoso University, tak aby wymagane oprogramowanie i poprawne dane były uwzględniane podczas wdrażania.

Przypomnienie: Jeśli zostanie wyświetlony komunikat o błędzie lub coś nie działa w miarę przechodzenia przez samouczek, sprawdź stronę rozwiązywania problemów.

SQL Server Compact a SQL Server Express

Przykładowa aplikacja używa SQL Server Compact 4.0. Ten aparat bazy danych jest stosunkowo nową opcją dla witryn internetowych; wcześniejsze wersje SQL Server Compact nie działają w środowisku hostingu sieci Web. SQL Server Compact oferuje kilka korzyści w porównaniu z bardziej typowym scenariuszem tworzenia przy użyciu SQL Server Express i wdrażania w pełnym SQL Server. W zależności od wybranego dostawcy hostingu SQL Server Compact może być tańsze do wdrożenia, ponieważ niektórzy dostawcy pobierają dodatkową opłatę, aby obsługiwać pełną bazę danych SQL Server. Za SQL Server Compact nie są naliczane dodatkowe opłaty, ponieważ aparat bazy danych można wdrożyć jako część aplikacji internetowej.

Należy jednak również pamiętać o jego ograniczeniach. SQL Server Compact nie obsługuje procedur składowanych, wyzwalaczy, widoków ani replikacji. (Aby uzyskać pełną listę funkcji SQL Server, które nie są obsługiwane przez SQL Server Compact, zobacz Różnice między SQL Server Compact i SQL Server). Ponadto niektóre narzędzia, których można użyć do manipulowania schematami i danymi w SQL Server Express i SQL Server baz danych nie działają z SQL Server Compact. Na przykład nie można używać narzędzi SQL Server Management Studio ani SQL Server Data Tools w programie Visual Studio z bazami danych SQL Server Compact. Dostępne są inne opcje pracy z bazami danych SQL Server Compact:

  • Eksplorator serwera można użyć w programie Visual Studio, który oferuje ograniczoną funkcjonalność manipulowania bazami danych dla SQL Server Compact.
  • Można użyć funkcji manipulowania bazą danych programu WebMatrix, która ma więcej funkcji niż Eksplorator serwera.
  • Można użyć stosunkowo w pełni funkcjonalnych narzędzi innych firm lub narzędzi open source, takich jak SQL Server Compact Przybornik i narzędzie SQL Compact data and schema script.
  • Możesz pisać i uruchamiać własne skrypty DDL (języka definicji danych), aby manipulować schematem bazy danych.

Możesz zacząć od SQL Server Compact, a następnie uaktualnić później w miarę rozwoju potrzeb. W kolejnych samouczkach z tej serii pokazano, jak przeprowadzić migrację z SQL Server Compact do SQL Server Express i SQL Server. Jeśli jednak tworzysz nową aplikację i spodziewasz się SQL Server w najbliższej przyszłości, prawdopodobnie najlepiej zacząć od SQL Server lub SQL Server Express.

Konfigurowanie aparatu bazy danych SQL Server Compact do wdrożenia

Oprogramowanie wymagane do dostępu do danych w aplikacji Contoso University zostało dodane przez zainstalowanie następujących pakietów NuGet:

Linki wskazują na bieżące wersje tych pakietów, które mogą być nowsze niż zainstalowane w projekcie startowym pobranym na potrzeby tego samouczka. W przypadku wdrożenia u dostawcy hostingu upewnij się, że używasz programu Entity Framework 5.0 lub nowszego. Wcześniejsze wersje Migracje Code First wymagają pełnego zaufania, a w wielu dostawcach hostingu aplikacja będzie działać w średniej relacji zaufania. Aby uzyskać więcej informacji na temat średniego zaufania, zobacz samouczek Wdrażanie w usługach IIS jako środowisko testowe .

Instalacja pakietu NuGet zwykle zajmuje się wszystkim, czego potrzebujesz, aby wdrożyć to oprogramowanie za pomocą aplikacji. W niektórych przypadkach obejmuje to zadania, takie jak zmiana pliku Web.config i dodawanie skryptów programu PowerShell uruchamianych za każdym razem, gdy budować rozwiązanie. Jeśli chcesz dodać obsługę dowolnej z tych funkcji (takich jak SQL Server Compact i Entity Framework) bez korzystania z narzędzia NuGet, upewnij się, że wiesz, co robi instalacja pakietu NuGet, aby można było wykonać tę samą pracę ręcznie.

Istnieje jeden wyjątek, w którym nuGet nie zajmuje się wszystkim, co musisz zrobić, aby zapewnić pomyślne wdrożenie. Pakiet NuGet SqlServerCompact dodaje skrypt po kompilacji do projektu, który kopiuje zestawy natywne do podfolderów x86 i amd64 w folderze pojemnika projektu, ale skrypt nie zawiera tych folderów w projekcie. W związku z tym narzędzie Web Deploy nie będzie kopiować ich do docelowej witryny sieci Web, chyba że ręcznie uwzględnisz je w projekcie. (To zachowanie wynika z domyślnej konfiguracji wdrożenia; inną opcją, której nie użyjesz w tych samouczkach, jest zmiana ustawienia, które steruje tym zachowaniem. Ustawienie, które można zmienić, to Tylko pliki potrzebne do uruchomienia aplikacji w obszarze Elementy do wdrożenia na karcie Pakiet/Publikowanie w sieci Web okna Właściwości projektu . Zmiana tego ustawienia nie jest ogólnie zalecana, ponieważ może spowodować wdrożenie wielu plików w środowisku produkcyjnym niż są tam potrzebne. Aby uzyskać więcej informacji na temat alternatyw, zobacz samouczek Konfigurowanie właściwości projektu .

Skompiluj projekt, a następnie w Eksplorator rozwiązań kliknij pozycję Pokaż wszystkie pliki, jeśli jeszcze tego nie zrobiono. Być może trzeba będzie również kliknąć przycisk Odśwież.

Solution_Explorer_Show_All_Files

Rozwiń folder bin , aby wyświetlić foldery amd64 i x86 , a następnie wybierz te foldery, kliknij prawym przyciskiem myszy i wybierz pozycję Uwzględnij w programie Project.

amd64_and_x86_in_Solution_Explorer.png

Ikony folderów zmieniają się, aby pokazać, że folder został uwzględniony w projekcie.

Solution_Explorer_amd64_included.png

Konfigurowanie Migracje Code First na potrzeby wdrażania bazy danych aplikacji

Podczas wdrażania bazy danych aplikacji zazwyczaj nie wdrażasz bazy danych deweloperskich ze wszystkimi danymi w środowisku produkcyjnym, ponieważ większość danych w niej znajduje się prawdopodobnie tylko na potrzeby testowania. Na przykład nazwy uczniów w testowej bazie danych są fikcyjne. Z drugiej strony często nie można wdrażać tylko struktury bazy danych bez żadnych danych w ogóle. Niektóre dane w testowej bazie danych mogą być rzeczywistymi danymi i muszą istnieć, gdy użytkownicy zaczną korzystać z aplikacji. Na przykład baza danych może mieć tabelę zawierającą prawidłowe wartości klasy lub prawdziwe nazwy działów.

Aby zasymulować ten typowy scenariusz, skonfigurujesz metodę Migracje Code First Seed, która wstawia do bazy danych tylko dane, które mają być tam w środowisku produkcyjnym. Ta metoda Seed nie wstawia danych testowych, ponieważ zostanie uruchomiona w środowisku produkcyjnym po utworzeniu bazy danych w środowisku produkcyjnym przez program Code First.

We wcześniejszych wersjach programu Code First przed wydaniem migracji często zdarzało się, że metody seed wstawiają również dane testowe, ponieważ każda zmiana modelu podczas opracowywania bazy danych musiała zostać całkowicie usunięta i utworzona ponownie od podstaw. W przypadku Migracje Code First dane testowe są zachowywane po zmianach bazy danych, więc uwzględnienie danych testowych w metodzie Seed nie jest konieczne. Pobrany projekt używa metody pre-Migrations, w tym wszystkich danych w metodzie Seed klasy inicjatora. W tym samouczku wyłączysz klasę inicjatora i włączysz opcję Migracje. Następnie zaktualizujesz metodę Seed w klasie konfiguracji Migrations, aby wstawiała tylko dane, które mają zostać wstawione w środowisku produkcyjnym.

Na poniższym diagramie przedstawiono schemat bazy danych aplikacji:

School_database_diagram

W przypadku tych samouczków założono, że Student tabele i Enrollment powinny być puste po pierwszym wdrożeniu witryny. Inne tabele zawierają dane, które muszą być wstępnie załadowane po uruchomieniu aplikacji.

Ponieważ będziesz używać Migracje Code First, nie musisz już używać inicjatora DropCreateDatabaseIfModelChanges Code First. Kod tego inicjatora znajduje się w pliku SchoolInitializer.cs w projekcie ContosoUniversity.DAL. Ustawienie w elemecie appSettings pliku Web.config powoduje uruchomienie tego inicjatora za każdym razem, gdy aplikacja próbuje uzyskać dostęp do bazy danych po raz pierwszy:

<appSettings>
  <add key="Environment" value="Dev" />
  <add key="DatabaseInitializerForType ContosoUniversity.DAL.SchoolContext, ContosoUniversity.DAL" value="ContosoUniversity.DAL.SchoolInitializer, ContosoUniversity.DAL" />
</appSettings>

Otwórz plik Web.config aplikacji i usuń element określający klasę inicjatora Code First z elementu appSettings. Element appSettings wygląda teraz następująco:

<appSettings>
  <add key="Environment" value="Dev" />
</appSettings>

Uwaga

Innym sposobem określenia klasy inicjatora jest to, wywołując Database.SetInitializer metodę w Application_Start pliku Global.asax . Jeśli włączasz migracje w projekcie, który używa tej metody do określenia inicjatora, usuń ten wiersz kodu.

Następnie włącz Migracje Code First.

Pierwszym krokiem jest upewnienie się, że projekt ContosoUniversity jest ustawiony jako projekt startowy. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt ContosoUniversity i wybierz pozycję Ustaw jako projekt startowy. Migracje Code First będzie wyglądać w projekcie startowym, aby znaleźć parametry połączenia bazy danych.

W menu Narzędzia kliknij pozycję Menedżer pakietów NuGet , a następnie konsolę Menedżera pakietów.

Selecting_Package_Manager_Console

W górnej części okna Konsola menedżera pakietów wybierz pozycję ContosoUniversity.DAL jako projekt domyślny, a następnie w PM> wierszu polecenia wprowadź wartość "enable-migrations".

włączanie migrations_command

To polecenie tworzy plik Configuration.cs w nowym folderze Migrations w projekcie ContosoUniversity.DAL.

Migrations_folder_in_Solution_Explorer

Wybrano projekt DAL, ponieważ polecenie "enable-migrations" musi zostać wykonane w projekcie zawierającym klasę kontekstową Code First. Gdy ta klasa znajduje się w projekcie biblioteki klas, Migracje Code First szuka parametrów połączenia bazy danych w projekcie startowym rozwiązania. W rozwiązaniu ContosoUniversity projekt internetowy został ustawiony jako projekt startowy. (Jeśli nie chcesz wyznaczyć projektu, który ma parametry połączenia jako projekt startowy w programie Visual Studio, możesz określić projekt startowy w poleceniu programu PowerShell. Aby wyświetlić składnię polecenia dla polecenia enable-migrations, możesz wprowadzić polecenie "get-help enable-migrations".

Otwórz plik Configuration.cs i zastąp komentarze w metodzie Seed następującym kodem:

var instructors = new List<Instructor>
{   
    new Instructor { FirstMidName = "Kim",     LastName = "Abercrombie", HireDate = DateTime.Parse("1995-03-11"), OfficeAssignment = new OfficeAssignment { Location = "Smith 17" } },
    new Instructor { FirstMidName = "Fadi",    LastName = "Fakhouri",    HireDate = DateTime.Parse("2002-07-06"), OfficeAssignment = new OfficeAssignment { Location = "Gowan 27" } },
    new Instructor { FirstMidName = "Roger",   LastName = "Harui",       HireDate = DateTime.Parse("1998-07-01"), OfficeAssignment = new OfficeAssignment { Location = "Thompson 304" } },
    new Instructor { FirstMidName = "Candace", LastName = "Kapoor",      HireDate = DateTime.Parse("2001-01-15") },
    new Instructor { FirstMidName = "Roger",   LastName = "Zheng",       HireDate = DateTime.Parse("2004-02-12") }
};
instructors.ForEach(s => context.Instructors.AddOrUpdate(i => i.LastName, s));
context.SaveChanges();

var departments = new List<Department>
{
    new Department { Name = "English",     Budget = 350000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 1 },
    new Department { Name = "Mathematics", Budget = 100000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 2 },
    new Department { Name = "Engineering", Budget = 350000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 3 },
    new Department { Name = "Economics",   Budget = 100000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 4 }
};
departments.ForEach(s => context.Departments.AddOrUpdate(d => d.Name, s));
context.SaveChanges();

var courses = new List<Course>
{
    new Course { CourseID = 1050, Title = "Chemistry",      Credits = 3, DepartmentID = 3, Instructors = new List<Instructor>() },
    new Course { CourseID = 4022, Title = "Microeconomics", Credits = 3, DepartmentID = 4, Instructors = new List<Instructor>() },
    new Course { CourseID = 4041, Title = "Macroeconomics", Credits = 3, DepartmentID = 4, Instructors = new List<Instructor>() },
    new Course { CourseID = 1045, Title = "Calculus",       Credits = 4, DepartmentID = 2, Instructors = new List<Instructor>() },
    new Course { CourseID = 3141, Title = "Trigonometry",   Credits = 4, DepartmentID = 2, Instructors = new List<Instructor>() },
    new Course { CourseID = 2021, Title = "Composition",    Credits = 3, DepartmentID = 1, Instructors = new List<Instructor>() },
    new Course { CourseID = 2042, Title = "Literature",     Credits = 4, DepartmentID = 1, Instructors = new List<Instructor>() }
};
courses.ForEach(s => context.Courses.AddOrUpdate(s));
context.SaveChanges();

courses[0].Instructors.Add(instructors[0]);
courses[0].Instructors.Add(instructors[1]);
courses[1].Instructors.Add(instructors[2]);
courses[2].Instructors.Add(instructors[2]);
courses[3].Instructors.Add(instructors[3]);
courses[4].Instructors.Add(instructors[3]);
courses[5].Instructors.Add(instructors[3]);
courses[6].Instructors.Add(instructors[3]);
context.SaveChanges();

Odwołania do List czerwonego zygzakowego wiersza pod nimi, ponieważ nie masz using jeszcze instrukcji dla jej przestrzeni nazw. Kliknij prawym przyciskiem myszy jedno z wystąpień List programu i kliknij polecenie Rozwiąż, a następnie kliknij polecenie System.Collections.Generic.

Rozwiązywanie problemów z instrukcją using

Ten wybór menu dodaje następujący kod do instrukcji using w górnej części pliku.

using System.Collections.Generic;

Uwaga

Dodawanie kodu do Seed metody jest jednym z wielu sposobów, na które można wstawić stałe dane do bazy danych. Alternatywą jest dodanie kodu do Up metod i Down każdej klasy migracji. Metody Up i Down zawierają kod implementujący zmiany bazy danych. Przykłady z nich zostaną wyświetlone w samouczku Wdrażanie aktualizacji bazy danych .

Możesz również napisać kod wykonujący instrukcje SQL przy użyciu Sql metody . Jeśli na przykład dodasz kolumnę Budżet do tabeli Department i chcesz zainicjować wszystkie budżety działu do 1000,00 USD w ramach migracji, możesz dodać następujący wiersz kodu do Up metody dla tej migracji:

Sql("UPDATE Department SET Budget = 1000");

W tym przykładzie pokazanym na potrzeby tego samouczka użyto AddOrUpdate metody w Seed metodzie klasy Migracje Code FirstConfiguration. Migracje Code First wywołuje metodę Seed po każdej migracji, a ta metoda aktualizuje wiersze, które zostały już wstawione, lub wstawia je, jeśli jeszcze nie istnieją. Metoda AddOrUpdate może nie być najlepszym wyborem dla danego scenariusza. Aby uzyskać więcej informacji, zobacz Artykuł Take care with EF 4.3 AddOrUpdate Method on Julie Lerman's blog (Metoda AddOrUpdate platformy EF 4.3 w blogu Julie Lerman).

Naciśnij klawisze CTRL-SHIFT-B, aby skompilować projekt.

Następnym krokiem DbMigration jest utworzenie klasy na potrzeby migracji początkowej. Chcesz, aby ta migracja utworzyła nową bazę danych, więc musisz usunąć bazę danych, która już istnieje. SQL Server Compact bazy danych znajdują się w plikach sdf w folderze App_Data. W Eksplorator rozwiązań rozwiń węzeł App_Data w projekcie ContosoUniversity, aby wyświetlić dwie SQL Server Compact bazy danych, które są reprezentowane przez pliki sdf.

Kliknij prawym przyciskiem myszy plik School.sdf i kliknij polecenie Usuń.

sdf_files_in_Solution_Explorer

W oknie Konsola menedżera pakietów wprowadź polecenie "add-migration Initial", aby utworzyć migrację początkową i nadaj jej nazwę "Initial".

dodawanie migration_command

Migracje Code First tworzy inny plik klasy w folderze Migrations, a ta klasa zawiera kod tworzący schemat bazy danych.

W konsoli menedżera pakietów wprowadź polecenie "update-database", aby utworzyć bazę danych i uruchomić metodę Seed .

update-database_command

(Jeśli wystąpi błąd wskazujący, że tabela już istnieje i nie można jej utworzyć, prawdopodobnie dlatego, że aplikacja została uruchomiona po usunięciu bazy danych i przed wykonaniem polecenia update-database. W takim przypadku ponownie usuń plik School.sdf i spróbuj ponownie wykonać update-database polecenie.

Uruchom aplikację. Teraz strona Uczniowie jest pusta, ale strona Instruktorzy zawiera instruktorów. Po wdrożeniu aplikacji uzyskasz dostęp do środowiska produkcyjnego.

Empty_Students_page

Instructors_page_after_initial_migration

Projekt jest teraz gotowy do wdrożenia bazy danych School .

Tworzenie bazy danych członkostwa na potrzeby wdrożenia

Aplikacja Contoso University używa systemu członkostwa ASP.NET i uwierzytelniania formularzy do uwierzytelniania i autoryzacji użytkowników. Jedna ze stron jest dostępna tylko dla administratorów. Aby wyświetlić tę stronę, uruchom aplikację i wybierz pozycję Aktualizuj środki z menu wysuwanego w obszarze Kursy. Aplikacja wyświetla stronę Logowanie , ponieważ tylko administratorzy mają uprawnienia do korzystania ze strony Aktualizuj środki .

Log_in_page

Zaloguj się jako "administrator" przy użyciu hasła "Pas$w0rd" (zwróć uwagę na zero zamiast litery "o" w "w0rd"). Po zalogowaniu zostanie wyświetlona strona Aktualizuj środki .

Update_Credits_page

Podczas wdrażania lokacji po raz pierwszy często wyklucza się większość lub wszystkie konta użytkowników tworzone na potrzeby testowania. W takim przypadku wdrożysz konto administratora i nie będziesz mieć kont użytkowników. Zamiast ręcznie usuwać konta testowe, utworzysz nową bazę danych członkostwa, która ma tylko jedno konto użytkownika administratora potrzebne w środowisku produkcyjnym.

Uwaga

Baza danych członkostwa przechowuje skrót haseł kont. Aby wdrożyć konta z jednego komputera na innym, należy upewnić się, że procedury tworzenia skrótów nie generują różnych skrótów na serwerze docelowym niż na komputerze źródłowym. Będą one generować te same skróty, gdy używasz ASP.NET dostawców uniwersalnych, o ile nie zmienisz algorytmu domyślnego. Domyślny algorytm to HMACSHA256 i jest określony w atrybucie weryfikacji elementu machineKey w pliku Web.config.

Baza danych członkostwa nie jest utrzymywana przez Migracje Code First i nie ma automatycznego inicjatora, który zawiera bazę danych z kontami testowymi (tak jak w przypadku bazy danych School). W związku z tym, aby dane testowe były dostępne, należy utworzyć kopię testowej bazy danych przed utworzeniem nowej.

W Eksplorator rozwiązań zmień nazwę pliku aspnet.sdf w folderze App_Data na aspnet-Dev.sdf. (Nie twórz kopii, po prostu zmień jej nazwę — za chwilę utworzysz nową bazę danych).

W Eksplorator rozwiązań upewnij się, że wybrano projekt internetowy (ContosoUniversity, a nie ContosoUniversity.DAL). Następnie w menu Project (Projekt ) wybierz pozycję ASP.NET Configuration (Konfiguracja ), aby uruchomić narzędzie do administrowania witrynami sieci Web (WAT).

Wybierz kartę Zabezpieczenia .

WAT_Security_tab

Kliknij pozycję Utwórz role lub Zarządzaj rolami i dodaj rolę administratora .

WAT_Create_New_Role

Wróć do karty Zabezpieczenia , kliknij pozycję Utwórz użytkownika i dodaj użytkownika "admin" jako administrator. Przed kliknięciem przycisku Utwórz użytkownika na stronie Tworzenie użytkownika upewnij się, że zaznaczono pole wyboru Administrator . Hasło używane w tym samouczku to "Pas$w0rd" i można wprowadzić dowolny adres e-mail.

WAT_Create_User

Zamknij okno przeglądarki. W Eksplorator rozwiązań kliknij przycisk odświeżenia, aby wyświetlić nowy plik aspnet.sdf.

New_aspnet.sdf_in_Solution_Explorer

Kliknij prawym przyciskiem myszy plik aspnet.sdf i wybierz polecenie Uwzględnij w projekcie.

Rozróżnianie programowania od produkcyjnych baz danych

W tej sekcji zmienisz nazwy baz danych tak, aby wersje deweloperskie to School-Dev.sdf i aspnet-Dev.sdf, a wersje produkcyjne to School-Prod.sdf i aspnet-Prod.sdf. Nie jest to konieczne, ale pomoże to uniemożliwić uzyskanie wersji testowych i produkcyjnych baz danych zdezorientowanych.

W Eksplorator rozwiązań kliknij pozycję Odśwież i rozwiń folder App_Data, aby wyświetlić utworzoną wcześniej bazę danych School. Kliknij ją prawym przyciskiem myszy i wybierz polecenie Uwzględnij w projekcie.

Including_School.sdf_in_project

Zmień nazwę pliku aspnet.sdf na aspnet-Prod.sdf.

Zmień nazwę School.sdf na School-Dev.sdf.

Po uruchomieniu aplikacji w programie Visual Studio nie chcesz używać wersji -Prod plików bazy danych, chcesz użyć wersji -Dev . W związku z tym należy zmienić parametry połączenia w pliku Web.config, aby wskazywały one na wersje -Dev baz danych. (Nie utworzono pliku School-Prod.sdf, ale jest to ok, ponieważ code first utworzy bazę danych w środowisku produkcyjnym przy pierwszym uruchomieniu aplikacji).

Otwórz plik Web.config aplikacji i znajdź parametry połączenia:

<configuration>
  <!-- Settings -->
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|aspnet.sdf" providerName="System.Data.SqlServerCe.4.0" />
    <add name="SchoolContext" connectionString="Data Source=|DataDirectory|School.sdf" providerName="System.Data.SqlServerCe.4.0" />
  </connectionStrings>
  <!-- Settings -->
</configuration>

Zmień wartość "aspnet.sdf" na "aspnet-Dev.sdf", a następnie zmień wartość "School.sdf" na "School-Dev.sdf":

<configuration>
  <!-- Settings -->
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|aspnet-Dev.sdf" providerName="System.Data.SqlServerCe.4.0" />
    <add name="SchoolContext" connectionString="Data Source=|DataDirectory|School-Dev.sdf" providerName="System.Data.SqlServerCe.4.0" />
  </connectionStrings>
  <!-- Settings -->
</configuration>

Aparat bazy danych SQL Server Compact i obie bazy danych są teraz gotowe do wdrożenia. W poniższym samouczku skonfigurowaliśmy automatyczne przekształcenia plikówWeb.config dla ustawień, które muszą być inne w środowiskach deweloperskich, testowych i produkcyjnych. (Wśród ustawień, które należy zmienić, są parametry połączenia, ale te zmiany zostaną skonfigurowane później podczas tworzenia profilu publikowania).

Więcej informacji

Aby uzyskać więcej informacji na temat narzędzia NuGet, zobacz Manage Project Libraries with NuGet and NuGet Documentation (Zarządzanie bibliotekami projektów przy użyciu pakietów NuGet i dokumentacji nuGet). Jeśli nie chcesz używać pakietu NuGet, musisz dowiedzieć się, jak analizować pakiet NuGet, aby określić, co robi podczas instalacji. (Na przykład może skonfigurować Web.config przekształcenia, skonfigurować skrypty programu PowerShell do uruchamiania w czasie kompilacji itp.) Aby dowiedzieć się więcej o sposobie działania narzędzia NuGet, zobacz szczególnie Tworzenie i publikowanie pliku pakietu i pliku konfiguracji oraz przekształcenia kodu źródłowego.