Udostępnij za pośrednictwem


Database First

Ten film wideo i przewodnik krok po kroku zawierają wprowadzenie do programowania w usłudze Database First przy użyciu platformy Entity Framework. Funkcja Database First umożliwia odtworzenie modelu z istniejącej bazy danych. Model jest przechowywany w pliku EDMX (rozszerzenie edmx) i można go wyświetlać i edytować w Projektancie programu Entity Framework. Klasy, z którymi wchodzisz w interakcję w swojej aplikacji, są generowane automatycznie z pliku EDMX.

Obejrzyj film wideo

Ten film wideo zawiera wprowadzenie do programowania w usłudze Database First przy użyciu platformy Entity Framework. Funkcja Database First umożliwia odtworzenie modelu z istniejącej bazy danych. Model jest przechowywany w pliku EDMX (rozszerzenie edmx) i można go wyświetlać i edytować w Projektancie programu Entity Framework. Klasy, z którymi wchodzisz w interakcję w swojej aplikacji, są generowane automatycznie z pliku EDMX.

Prezentowane przez: Rowan Miller

Wideo: WMV | MP4 | WMV (ZIP)

Wymagania wstępne

Aby ukończyć ten przewodnik, musisz mieć zainstalowany co najmniej program Visual Studio 2010 lub Visual Studio 2012.

Jeśli używasz programu Visual Studio 2010, musisz również zainstalować pakiet NuGet .

 

1. Tworzenie istniejącej bazy danych

Zwykle, gdy kierujesz się na istniejącą bazę danych, jest ona już utworzona, ale w tym przewodniku musimy utworzyć bazę danych, aby uzyskać do niej dostęp.

Serwer bazy danych zainstalowany w programie Visual Studio różni się w zależności od zainstalowanej wersji programu Visual Studio:

  • Jeśli używasz programu Visual Studio 2010, utworzysz bazę danych SQL Express.
  • Jeśli używasz programu Visual Studio 2012, utworzysz bazę danych LocalDB .

 

Wygenerujmy bazę danych.

  • Otwórz program Visual Studio.

  • Widok —> Eksplorator serwera

  • Kliknij prawym przyciskiem myszy pozycję Połączenia danych —> Dodaj połączenie...

  • Jeśli wcześniej nie łączyłeś się z bazą danych za pomocą Eksploratora serwera, musisz wybrać Microsoft SQL Server jako źródło danych.

    Wybieranie źródła danych

  • Połącz się z bazą danych LocalDB lub SQL Express, w zależności od zainstalowanej bazy danych, a następnie wprowadź wartość DatabaseFirst.Blogging jako nazwę bazy danych

    Sql Express Connection DF

    LocalDB Connection DF

  • Wybierz przycisk OK i zostanie wyświetlony monit o utworzenie nowej bazy danych, wybierz pozycję Tak

    Okno dialogowe Tworzenie bazy danych

  • Nowa baza danych pojawi się teraz w Eksploratorze serwera, kliknij ją prawym przyciskiem myszy i wybierz pozycję Nowe zapytanie

  • Skopiuj następujący kod SQL do nowego zapytania, a następnie kliknij prawym przyciskiem myszy zapytanie i wybierz polecenie Wykonaj

CREATE TABLE [dbo].[Blogs] (
    [BlogId] INT IDENTITY (1, 1) NOT NULL,
    [Name] NVARCHAR (200) NULL,
    [Url]  NVARCHAR (200) NULL,
    CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
);

CREATE TABLE [dbo].[Posts] (
    [PostId] INT IDENTITY (1, 1) NOT NULL,
    [Title] NVARCHAR (200) NULL,
    [Content] NTEXT NULL,
    [BlogId] INT NOT NULL,
    CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
    CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [dbo].[Blogs] ([BlogId]) ON DELETE CASCADE
);

2. Tworzenie aplikacji

Aby zachować prostotę, utworzymy podstawową aplikację konsolową, która używa usługi Database First do wykonywania dostępu do danych:

  • Otwórz program Visual Studio.
  • Plik — Nowy —>> Projekt...
  • Wybierz pozycję Windows z menu po lewej stronie i pozycję Aplikacja konsolowa
  • Wprowadź DatabaseFirstSample jako nazwę
  • Wybierz OK

 

3. Model inżyniera odwrotnego

Użyjemy projektanta platformy Entity Framework, który zostanie uwzględniony w programie Visual Studio, aby utworzyć nasz model.

  • Projekt —> dodaj nowy element...

  • Wybierz Dane z menu po lewej stronie, a następnie Model danych jednostki ADO.NET

  • Wprowadź BloggingModel jako nazwę i kliknij OK.

  • Spowoduje to uruchomienie Kreatora modelu danych jednostki

  • Wybierz pozycję Generuj z bazy danych i kliknij przycisk Dalej

    Kreator — krok 1

  • Wybierz połączenie z bazą danych utworzoną w pierwszej sekcji, wprowadź ciąg BloggingContext jako nazwę parametrów połączenia, a następnie kliknij przycisk Dalej.

    Kreator — krok 2

  • Kliknij pole wyboru obok pozycji "Tabele", aby zaimportować wszystkie tabele, a następnie kliknij przycisk Zakończ.

    Kreator — krok 3

 

Po zakończeniu procesu inżynierii odwrotnej nowy model zostanie dodany do projektu i otwarty do obejrzenia w Projektancie platformy Entity Framework. Plik App.config został również dodany do projektu ze szczegółami połączenia dla bazy danych.

Początkowy model

Dodatkowe kroki w programie Visual Studio 2010

Jeśli pracujesz w programie Visual Studio 2010, musisz wykonać kilka dodatkowych kroków, aby przeprowadzić uaktualnienie do najnowszej wersji programu Entity Framework. Uaktualnianie jest ważne, ponieważ zapewnia dostęp do ulepszonej powierzchni interfejsu API, która jest znacznie łatwiejsza w użyciu, a także najnowsze poprawki błędów.

Najpierw musimy pobrać najnowszą wersję programu Entity Framework z narzędzia NuGet.

  • Projektu–> Zarządzaj pakietami NuGet...Jeśli nie masz opcji Zarządzaj pakietami NuGet... należy zainstalować najnowszą wersję pakietu NuGet
  • Wybierz kartę Online
  • Wybierz pakiet EntityFramework
  • Kliknij pozycję Zainstaluj

Następnie musimy zamienić nasz model, aby wygenerować kod korzystający z interfejsu API DbContext, który został wprowadzony w nowszych wersjach platformy Entity Framework.

  • Kliknij prawym przyciskiem myszy puste miejsce modelu w projektancie EF i wybierz polecenie Dodaj element generowania kodu...

  • Wybierz pozycję Szablony online z menu po lewej stronie i wyszukaj pozycję DbContext

  • Wybierz generator DBContext EF 5.x dla języka C#, wprowadź ciąg BloggingModel jako nazwę i kliknij przycisk Dodaj

    Szablon DbContext

 

4. Odczytywanie i zapisywanie danych

Teraz, gdy mamy model, nadszedł czas, aby używać go do uzyskiwania dostępu do niektórych danych. Klasy, których będziemy używać do uzyskiwania dostępu do danych, są generowane automatycznie na podstawie pliku EDMX.

Ten zrzut ekranu pochodzi z programu Visual Studio 2012, jeśli używasz programu Visual Studio 2010, pliki BloggingModel.tt i BloggingModel.Context.tt będą bezpośrednio pod projektem, a nie zagnieżdżone w pliku EDMX.

Wygenerowane klasy DF

 

Zaimplementuj metodę Main w Program.cs, jak pokazano poniżej. Ten kod tworzy nowe wystąpienie kontekstu, a następnie używa go do wstawienia nowego bloga. Następnie używa zapytania LINQ, aby pobrać wszystkie blogi z bazy danych uporządkowane alfabetycznie według tytułu.

class Program
{
    static void Main(string[] args)
    {
        using (var db = new BloggingContext())
        {
            // Create and save a new Blog
            Console.Write("Enter a name for a new Blog: ");
            var name = Console.ReadLine();

            var blog = new Blog { Name = name };
            db.Blogs.Add(blog);
            db.SaveChanges();

            // Display all Blogs from the database
            var query = from b in db.Blogs
                        orderby b.Name
                        select b;

            Console.WriteLine("All blogs in the database:");
            foreach (var item in query)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

Teraz możesz uruchomić aplikację i przetestować ją.

Enter a name for a new Blog: ADO.NET Blog
All blogs in the database:
ADO.NET Blog
Press any key to exit...

 

5. Obsługa zmian bazy danych

Teraz nadszedł czas, aby wprowadzić pewne zmiany w schemacie bazy danych, kiedy wprowadzamy te zmiany, musimy również zaktualizować nasz model, aby odzwierciedlał te zmiany.

Pierwszym krokiem jest wprowadzenie pewnych zmian w schemacie bazy danych. Dodamy tabelę Users do schematu.

  • Kliknij prawym przyciskiem myszy bazę danych DatabaseFirst.Blogging w Eksploratorze serwera i wybierz pozycję Nowe zapytanie
  • Skopiuj następujący kod SQL do nowego zapytania, a następnie kliknij prawym przyciskiem myszy zapytanie i wybierz polecenie Wykonaj
CREATE TABLE [dbo].[Users]
(
    [Username] NVARCHAR(50) NOT NULL PRIMARY KEY,  
    [DisplayName] NVARCHAR(MAX) NULL
)

Po zaktualizowaniu schematu nadszedł czas, aby zaktualizować model przy użyciu tych zmian.

  • Kliknij prawym przyciskiem myszy puste miejsce modelu w projektancie EF i wybierz pozycję "Aktualizuj model z bazy danych...", spowoduje to uruchomienie Kreatora aktualizacji

  • Na karcie Dodawanie Kreatora aktualizacji zaznacz pole wyboru obok pozycji Tabele, co oznacza, że chcemy dodać wszystkie nowe tabele ze schematu. Karta Odświeżanie zawiera wszystkie istniejące tabele w modelu, które będą sprawdzane pod kątem zmian podczas aktualizacji. Na kartach Usuń są wyświetlane wszystkie tabele, które zostały usunięte ze schematu, a także zostaną usunięte z modelu w ramach aktualizacji. Informacje na tych dwóch kartach są automatycznie wykrywane i udostępniane tylko do celów informacyjnych. Nie można zmienić żadnych ustawień.

    Kreator odświeżania

  • Kliknij przycisk Zakończ w Kreatorze aktualizacji

 

Model został zaktualizowany, aby uwzględniać nowy element Użytkownik, który jest mapowany na tabelę Users, którą dodaliśmy do bazy danych.

Zaktualizowano model

Podsumowanie

W tym przewodniku przyjrzeliśmy się programowi Database First, który pozwolił nam utworzyć model w projektancie EF Designer na podstawie istniejącej bazy danych. Następnie użyliśmy tego modelu do odczytywania i zapisywania danych z bazy danych. Na koniec zaktualizowaliśmy model w celu odzwierciedlenia zmian wprowadzonych w schemacie bazy danych.