Database FirstDatabase First

Dieses Video und die schrittweise exemplarische Vorgehensweise bieten eine Einführung in die Database First Entwicklung mit Entity Framework.This video and step-by-step walkthrough provide an introduction to Database First development using Entity Framework. Mit Database First können Sie ein Modell aus einer vorhandenen Datenbank umkehren.Database First allows you to reverse engineer a model from an existing database. Das Modell wird in einer EDMX-Datei (edmx-Erweiterung) gespeichert und kann in der Entity Framework Designer angezeigt und bearbeitet werden.The model is stored in an EDMX file (.edmx extension) and can be viewed and edited in the Entity Framework Designer. Die Klassen, mit denen Sie in Ihrer Anwendung interagieren, werden automatisch aus der EDMX-Datei generiert.The classes that you interact with in your application are automatically generated from the EDMX file.

Video ansehenWatch the video

Dieses Video bietet eine Einführung in die Database First Entwicklung mit Entity Framework.This video provides an introduction to Database First development using Entity Framework. Mit Database First können Sie ein Modell aus einer vorhandenen Datenbank umkehren.Database First allows you to reverse engineer a model from an existing database. Das Modell wird in einer EDMX-Datei (edmx-Erweiterung) gespeichert und kann in der Entity Framework Designer angezeigt und bearbeitet werden.The model is stored in an EDMX file (.edmx extension) and can be viewed and edited in the Entity Framework Designer. Die Klassen, mit denen Sie in Ihrer Anwendung interagieren, werden automatisch aus der EDMX-Datei generiert.The classes that you interact with in your application are automatically generated from the EDMX file.

Präsentation:Rowan MillerPresented By: Rowan Miller

Video: WMV | MP4 | WMV (zip)Video: WMV | MP4 | WMV (ZIP)

VoraussetzungenPre-Requisites

Sie müssen mindestens Visual Studio 2010 oder Visual Studio 2012 installiert haben, um diese exemplarische Vorgehensweise abzuschließen.You will need to have at least Visual Studio 2010 or Visual Studio 2012 installed to complete this walkthrough.

Wenn Sie Visual Studio 2010 verwenden, müssen Sie auch nuget installieren.If you are using Visual Studio 2010, you will also need to have NuGet installed.

 

1. Erstellen Sie eine vorhandene Datenbank.1. Create an Existing Database

Wenn Sie eine vorhandene Datenbank als Ziel haben, wird Sie in der Regel bereits erstellt, aber in dieser exemplarischen Vorgehensweise müssen wir eine Datenbank erstellen, auf die zugegriffen werden kann.Typically when you are targeting an existing database it will already be created, but for this walkthrough we need to create a database to access.

Der Datenbankserver, der mit Visual Studio installiert wird, unterscheidet sich abhängig von der installierten Version von Visual Studio:The database server that is installed with Visual Studio is different depending on the version of Visual Studio you have installed:

  • Wenn Sie Visual Studio 2010 verwenden, erstellen Sie eine SQL Express-Datenbank.If you are using Visual Studio 2010 you'll be creating a SQL Express database.
  • Wenn Sie Visual Studio 2012 verwenden, erstellen Sie eine localdb -Datenbank.If you are using Visual Studio 2012 then you'll be creating a LocalDB database.

 

Nun generieren wir die Datenbank.Let's go ahead and generate the database.

  • Öffnen Sie Visual Studio.Open Visual Studio

  • Ansicht- > Server-ExplorerView -> Server Explorer

  • Klicken Sie mit der rechten Maustaste auf Datenverbindungen- > Verbindung hinzufügen...Right click on Data Connections -> Add Connection…

  • Wenn Sie über Server-Explorer keine Verbindung mit einer Datenbank hergestellt haben, müssen Sie Microsoft SQL Server als Datenquelle auswählen.If you haven’t connected to a database from Server Explorer before you’ll need to select Microsoft SQL Server as the data source

    Datenquelle auswählen

  • Stellen Sie eine Verbindung mit localdb oder SQL Express her, je nachdem, welche installiert wurde, und geben Sie databasefirst. blogals Datenbanknamen ein.Connect to either LocalDB or SQL Express, depending on which one you have installed, and enter DatabaseFirst.Blogging as the database name

    SQL Express-Verbindung (DF)

    Localdb-Verbindung (DF)

  • Wählen Sie OK aus, und Sie werden gefragt, ob Sie eine neue Datenbank erstellen möchten, und wählen Sie Ja aus.Select OK and you will be asked if you want to create a new database, select Yes

    Dialog Feld Create Database

  • Die neue Datenbank wird nun in Server-Explorer angezeigt, klicken Sie mit der rechten Maustaste darauf, und wählen Sie neue Abfrage aus.The new database will now appear in Server Explorer, right-click on it and select New Query

  • Kopieren Sie den folgenden SQL-Befehl in die neue Abfrage, klicken Sie mit der rechten Maustaste auf die Abfrage, und wählen Sie Ausführen .Copy the following SQL into the new query, then right-click on the query and select Execute

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. Erstellen der Anwendung2. Create the Application

Um dies zu gewährleisten, erstellen wir eine einfache Konsolenanwendung, die die Database First für den Datenzugriff verwendet:To keep things simple we’re going to build a basic console application that uses the Database First to perform data access:

  • Öffnen Sie Visual Studio.Open Visual Studio
  • Datei- > New- > Project...File -> New -> Project…
  • Wählen Sie im Menü auf der linken Seite und Konsolenanwendung Windows aus.Select Windows from the left menu and Console Application
  • Geben Sie databasefirstsample als Name ein.Enter DatabaseFirstSample as the name
  • Klicken Sie auf OK.Select OK

 

3. Reverse-Engineering-Modell3. Reverse Engineer Model

Wir verwenden Entity Framework Designer, die als Teil von Visual Studio enthalten ist, um das Modell zu erstellen.We’re going to make use of Entity Framework Designer, which is included as part of Visual Studio, to create our model.

  • Project- > Neues Element hinzufügen...Project -> Add New Item…

  • Wählen Sie im linken Menü Daten aus, und klicken Sie dann auf ADO.NET Entity Data ModelSelect Data from the left menu and then ADO.NET Entity Data Model

  • Geben Sie als Name bloggingmodel ein, und klicken Sie auf OK .Enter BloggingModel as the name and click OK

  • Dadurch wird der Entity Data Model-Assistent gestartet.This launches the Entity Data Model Wizard

  • Wählen Sie aus Datenbank generieren aus , und klicken Sie auf weiterSelect Generate from Database and click Next

    Schritt 1 des Assistenten

  • Wählen Sie die Verbindung mit der Datenbank aus, die Sie im ersten Abschnitt erstellt haben, geben Sie bloggingcontext als Namen der Verbindungs Zeichenfolge ein, und klicken Sie auf weiter .Select the connection to the database you created in the first section, enter BloggingContext as the name of the connection string and click Next

    Assistent Schritt 2

  • Aktivieren Sie das Kontrollkästchen neben "Tables", um alle Tabellen zu importieren, und klicken Sie auf "Fertigstellen"Click the checkbox next to ‘Tables’ to import all tables and click ‘Finish’

    Assistent Schritt 3

 

Sobald der Reverse-Engineering-Prozess abgeschlossen ist, wird das neue Modell dem Projekt hinzugefügt und geöffnet, damit Sie es im Entity Framework Designer anzeigen können.Once the reverse engineer process completes the new model is added to your project and opened up for you to view in the Entity Framework Designer. Außerdem wurde dem Projekt eine App.config Datei mit den Verbindungsdetails für die Datenbank hinzugefügt.An App.config file has also been added to your project with the connection details for the database.

Modell anfänglich

Weitere Schritte in Visual Studio 2010Additional Steps in Visual Studio 2010

Wenn Sie in Visual Studio 2010 arbeiten, müssen Sie einige zusätzliche Schritte ausführen, um ein Upgrade auf die neueste Version von Entity Framework durchzuführen.If you are working in Visual Studio 2010 there are some additional steps you need to follow to upgrade to the latest version of Entity Framework. Das Upgrade ist wichtig, da Sie Ihnen Zugriff auf eine verbesserte API-Oberfläche, die viel einfacher zu verwenden ist, sowie auf die neuesten Fehlerbehebungen bietet.Upgrading is important because it gives you access to an improved API surface, that is much easier to use, as well as the latest bug fixes.

Zuerst müssen wir die neueste Version von Entity Framework von nuget erhalten.First up, we need to get the latest version of Entity Framework from NuGet.

  • Project – > Nuget-Pakete verwalten... Wenn Sie nicht über die Option " nuget-Pakete verwalten... " verfügen, sollten Sie die neueste Version von nuget installieren.Project –> Manage NuGet Packages… If you don’t have the Manage NuGet Packages… option you should install the latest version of NuGet
  • Auswählen der Registerkarte " Online "Select the Online tab
  • Auswählen des " EntityFramework "-PaketsSelect the EntityFramework package
  • Klicken Sie auf Install (Installieren).Click Install

Als nächstes müssen wir das Modell austauschen, um Code zu generieren, der die dbcontext-API nutzt, die in späteren Versionen von Entity Framework eingeführt wurde.Next, we need to swap our model to generate code that makes use of the DbContext API, which was introduced in later versions of Entity Framework.

  • Klicken Sie mit der rechten Maustaste auf eine leere Stelle des Modells im EF-Designer, und wählen Sie Code Generierungs Element hinzufügen... aus.Right-click on an empty spot of your model in the EF Designer and select Add Code Generation Item…

  • Wählen Sie im linken Menü Online Vorlagen aus, und suchen Sie nach dbcontext .Select Online Templates from the left menu and search for DbContext

  • Wählen Sie den EF 5. x dbcontext Generator für # C aus, geben Sie bloggingmodel als Name ein, und klicken Sie auf Hinzufügen .Select the EF 5.x DbContext Generator for C#, enter BloggingModel as the name and click Add

    Dbcontext-Vorlage

 

4. lesen & schreiben von Daten4. Reading & Writing Data

Nachdem wir nun über ein Modell verfügen, ist es an der Zeit, es für den Zugriff auf einige Daten zu verwenden.Now that we have a model it’s time to use it to access some data. Die Klassen, die für den Zugriff auf Daten verwendet werden, werden automatisch für Sie basierend auf der EDMX-Datei generiert.The classes we are going to use to access data are being automatically generated for you based on the EDMX file.

Dieser Screenshot ist von Visual Studio 2012. Wenn Sie Visual Studio 2010 verwenden, befinden sich die Dateien BloggingModel.TT und BloggingModel.Context.tt direkt unter Ihrem Projekt, anstatt Sie in der EDMX-Datei zu untersuchen.This screen shot is from Visual Studio 2012, if you are using Visual Studio 2010 the BloggingModel.tt and BloggingModel.Context.tt files will be directly under your project rather than nested under the EDMX file.

Generierte Klassen (DF)

 

Implementieren Sie die Main-Methode in Program.cs, wie unten gezeigt.Implement the Main method in Program.cs as shown below. Mit diesem Code wird eine neue Instanz des Kontexts erstellt und anschließend verwendet, um einen neuen Blog einzufügen.This code creates a new instance of our context and then uses it to insert a new Blog. Anschließend wird eine LINQ-Abfrage verwendet, um alle Blogs aus der Datenbank alphabetisch nach Titel abzurufen.Then it uses a LINQ query to retrieve all Blogs from the database ordered alphabetically by Title.

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();
        }
    }
}

Sie können die Anwendung jetzt ausführen und testen.You can now run the application and test it out.

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

 

5. Umgang mit Daten Bank Änderungen5. Dealing with Database Changes

Nun ist es an der Zeit, Änderungen am Datenbankschema vorzunehmen, wenn wir diese Änderungen vornehmen, müssen wir auch unser Modell aktualisieren, um diese Änderungen widerzuspiegeln.Now it’s time to make some changes to our database schema, when we make these changes we also need to update our model to reflect those changes.

Der erste Schritt besteht darin, einige Änderungen am Datenbankschema vorzunehmen.The first step is to make some changes to the database schema. Wir fügen dem Schema eine Tabelle "Users" (Benutzer) hinzu.We’re going to add a Users table to the schema.

  • Klicken Sie in Server-Explorer mit der rechten Maustaste auf die Datenbank databasefirst. Blog, und wählen Sie neue Abfrage aus.Right-click on the DatabaseFirst.Blogging database in Server Explorer and select New Query
  • Kopieren Sie den folgenden SQL-Befehl in die neue Abfrage, klicken Sie mit der rechten Maustaste auf die Abfrage, und wählen Sie Ausführen .Copy the following SQL into the new query, then right-click on the query and select Execute
CREATE TABLE [dbo].[Users]
(
    [Username] NVARCHAR(50) NOT NULL PRIMARY KEY,  
    [DisplayName] NVARCHAR(MAX) NULL
)

Nachdem das Schema aktualisiert wurde, ist es an der Zeit, das Modell mit diesen Änderungen zu aktualisieren.Now that the schema is updated, it’s time to update the model with those changes.

  • Klicken Sie mit der rechten Maustaste auf eine leere Stelle des Modells im EF-Designer, und wählen Sie "Modell aus Datenbank aktualisieren..." aus. Dadurch wird der Update-Assistent gestartet.Right-click on an empty spot of your model in the EF Designer and select ‘Update Model from Database…’, this will launch the Update Wizard

  • Aktivieren Sie auf der Registerkarte hinzufügen des Update-Assistenten das Kontrollkästchen neben Tabellen, was bedeutet, dass wir neue Tabellen aus dem Schema hinzufügen möchten.On the Add tab of the Update Wizard check the box next to Tables, this indicates that we want to add any new tables from the schema. Auf der Registerkarte Aktualisieren werden alle vorhandenen Tabellen im Modell angezeigt, die während des Updates auf Änderungen geprüft werden. Auf den Registerkarten löschen werden alle Tabellen angezeigt, die aus dem Schema entfernt wurden. Sie werden auch als Teil des Updates aus dem Modell entfernt. Die Informationen auf diesen beiden Registerkarten werden automatisch erkannt und dienen nur zu Informationszwecken. Sie können keine Einstellungen ändern.The Refresh tab shows any existing tables in the model that will be checked for changes during the update. The Delete tabs show any tables that have been removed from the schema and will also be removed from the model as part of the update. The information on these two tabs is automatically detected and is provided for informational purposes only, you cannot change any settings.

    Aktualisierungs-Assistent

  • Klicken Sie im Update-Assistenten auf Fertigstellen.Click Finish on the Update Wizard

 

Das Modell wird nun so aktualisiert, dass es eine neue Benutzer Entität enthält, die der Benutzertabelle zugeordnet ist, die der Datenbank hinzugefügt wurde.The model is now updated to include a new User entity that maps to the Users table we added to the database.

Modell aktualisiert

ZusammenfassungSummary

In dieser exemplarischen Vorgehensweise haben wir uns mit Database First Entwicklung beschäftigt, mit der wir ein Modell im EF-Designer basierend auf einer vorhandenen Datenbank erstellen konnten.In this walkthrough we looked at Database First development, which allowed us to create a model in the EF Designer based on an existing database. Anschließend haben wir dieses Modell verwendet, um Daten aus der Datenbank zu lesen und zu schreiben.We then used that model to read and write some data from the database. Schließlich haben wir das Modell aktualisiert, um Änderungen widerzuspiegeln, die wir am Datenbankschema vorgenommen haben.Finally, we updated the model to reflect changes we made to the database schema.