Model FirstModel First

Dieses Video und die schrittweise exemplarische Vorgehensweise bieten eine Einführung in die Model First Entwicklung mit Entity Framework.This video and step-by-step walkthrough provide an introduction to Model First development using Entity Framework. Mit Model First können Sie ein neues Modell mithilfe des Entity Framework Designer erstellen und dann ein Datenbankschema aus dem Modell generieren.Model First allows you to create a new model using the Entity Framework Designer and then generate a database schema from the model. 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 und die schrittweise exemplarische Vorgehensweise bieten eine Einführung in die Model First Entwicklung mit Entity Framework.This video and step-by-step walkthrough provide an introduction to Model First development using Entity Framework. Mit Model First können Sie ein neues Modell mithilfe des Entity Framework Designer erstellen und dann ein Datenbankschema aus dem Modell generieren.Model First allows you to create a new model using the Entity Framework Designer and then generate a database schema from the model. 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 Visual Studio 2010 oder Visual Studio 2012 installiert haben, um diese exemplarische Vorgehensweise abzuschließen.You will need to have 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 die Anwendung.1. Create the Application

Um dies zu gewährleisten, erstellen wir eine einfache Konsolenanwendung, die die Model First für den Datenzugriff verwendet:To keep things simple we’re going to build a basic console application that uses the Model 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 modelfirstsample als Name ein.Enter ModelFirstSample as the name
  • Klicken Sie auf OK.Select OK

2. Modell erstellen2. Create 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 bloggingmodel als Name ein, und klicken Sie auf OK. Dadurch wird der Entity Data Model-Assistent gestartet.Enter BloggingModel as the name and click OK, this launches the Entity Data Model Wizard

  • Leeres Modell auswählen und auf Fertig stellen klickenSelect Empty Model and click Finish

    Leeres Modell erstellen

Die Entity Framework Designer wird mit einem leeren Modell geöffnet.The Entity Framework Designer is opened with a blank model. Nun können Sie dem Modell Entitäten, Eigenschaften und Zuordnungen hinzufügen.Now we can start adding entities, properties and associations to the model.

  • Klicken Sie mit der rechten Maustaste auf die Entwurfs Oberfläche, und wählen Sie EigenschaftenRight-click on the design surface and select Properties

  • In der Eigenschaftenfenster den Entitätencontainernamen in bloggingcontextändern, ist dies der Name des abgeleiteten Kontexts, der für Sie generiert wird, der Kontext stellt eine Sitzung mit der Datenbank dar und ermöglicht es uns, Daten abzufragen und zu speichern .In the Properties window change the Entity Container Name to BloggingContext This is the name of the derived context that will be generated for you, the context represents a session with the database, allowing us to query and save data

  • Klicken Sie mit der rechten Maustaste auf die Entwurfs Oberfläche, und wählen Sie neue > Entität hinzufügen aus.Right-click on the design surface and select Add New -> Entity…

  • Geben Sie den Namen der Entität und die BlogId als Schlüssel Name ein, und klicken Sie auf OK .Enter Blog as the entity name and BlogId as the key name and click OK

    Blog Entität hinzufügen

  • Klicken Sie mit der rechten Maustaste auf die neue Entität auf der Entwurfs Oberfläche, und wählen Sie neue > skalare Eigenschaft hinzufügenaus, und geben Sie Name als Namen der Eigenschaft ein.Right-click on the new entity on the design surface and select Add New -> Scalar Property, enter Name as the name of the property.

  • Wiederholen Sie diesen Vorgang, um eine URL -Eigenschaft hinzuzufügen.Repeat this process to add a Url property.

  • Klicken Sie mit der rechten Maustaste auf die URL -Eigenschaft auf der Entwurfs Oberfläche, und wählen Sie Eigenschaftenaus. in der Eigenschaftenfenster ändern Sie die Einstellung Nullable in true This allows us to save a Blog to the database without assigning it a UrlRight-click on the Url property on the design surface and select Properties, in the Properties window change the Nullable setting to True This allows us to save a Blog to the database without assigning it a Url

  • Fügen Sie mit den Techniken, die Sie soeben gelernt haben, eine Post -Entität mit der Eigenschaft " POSID KeyUsing the techniques you just learnt, add a Post entity with a PostId key property

  • Hinzufügen von Titel -und inhaltsskalaren Eigenschaften zur Post -EntitätAdd Title and Content scalar properties to the Post entity

Nachdem wir nun über mehrere Entitäten verfügen, ist es an der Zeit, eine Zuordnung (oder Beziehung) zwischen Ihnen hinzuzufügen.Now that we have a couple of entities, it’s time to add an association (or relationship) between them.

  • Klicken Sie mit der rechten Maustaste auf die Entwurfs Oberfläche, und wählen Sie neue Zuordnung hinzufügen > ... aus.Right-click on the design surface and select Add New -> Association…

  • Erstellen Sie ein Ende der Beziehung mit einer Multiplizität von einem und dem anderen Endpunkt, um mit einer Multiplizität von vielenzu veröffentlichen . Dies bedeutet, dass ein Blog viele Beiträge enthält und ein Beitrag zu einem Blog gehört .Make one end of the relationship point to Blog with a multiplicity of One and the other end point to Post with a multiplicity of Many This means that a Blog has many Posts and a Post belongs to one Blog

  • Stellen Sie sicher, dass das Feld Fremdschlüssel Eigenschaften zu ' Post ' hinzufügen aktiviert ist, und klicken Sie auf OKEnsure the Add foreign key properties to 'Post' Entity box is checked and click OK

    Association-MF hinzufügen

Wir verfügen jetzt über ein einfaches Modell, aus dem eine Datenbank generiert und zum Lesen und Schreiben von Daten verwendet werden kann.We now have a simple model that we can generate a database from and use to read and write data.

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

3. Erstellen der Datenbank3. Generating the Database

Mit unserem Modell können Entity Framework ein Datenbankschema berechnen, das es uns ermöglicht, Daten mit dem Modell zu speichern und abzurufen.Given our model, Entity Framework can calculate a database schema that will allow us to store and retrieve data using the model.

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.

  • Klicken Sie mit der rechten Maustaste auf die Entwurfs Oberfläche, und wählen Sie Datenbank aus Modell generieren... aus.Right-click on the design surface and select Generate Database from Model…

  • Klicken Sie auf neue Verbindung...Click New Connection… und geben Sie entweder localdb oder SQL Express an, je nachdem, welche Version von Visual Studio Sie verwenden, geben Sie modelfirst. blogals Datenbanknamen ein.and specify either LocalDB or SQL Express, depending on which version of Visual Studio you are using, enter ModelFirst.Blogging as the database name.

    Localdb-Verbindungs-MF

    SQL Express-Verbindung (MF)

  • 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

  • Wählen Sie weiter aus, und der Entity Framework Designer berechnet ein Skript, um das Datenbankschema zu erstellen.Select Next and the Entity Framework Designer will calculate a script to create the database schema

  • Nachdem das Skript angezeigt wird, klicken Sie auf Fertig stellen, und das Skript wird dem Projekt hinzugefügt und geöffnet.Once the script is displayed, click Finish and the script will be added to your project and opened

  • Klicken Sie mit der rechten Maustaste auf das Skript, und wählen Sie Ausführenaus. Sie werden aufgefordert, die Datenbank anzugeben, mit der eine Verbindung hergestellt werden soll, und localdb oder SQL Server Express anzugeben, abhängig von der verwendeten Version von Visual Studio.Right-click on the script and select Execute, you will be prompted to specify the database to connect to, specify LocalDB or SQL Server Express, depending on which version of Visual Studio you are using

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

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 Modelländerungen5. Dealing with Model Changes

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

Wir beginnen mit dem Hinzufügen einer neuen Benutzer Entität zum Modell.We’ll start by adding a new User entity to our model.

  • Fügen Sie einen neuen Benutzer Entitäts Namen mit Benutzername als Schlüssel Name und Zeichenfolge als Eigenschaftentyp für den Schlüssel hinzu.Add a new User entity name with Username as the key name and String as the property type for the key

    Benutzer Entität hinzufügen

  • Klicken Sie mit der rechten Maustaste auf die username -Eigenschaft auf der Entwurfs Oberfläche, und wählen Sie Eigenschaftenaus. in der Eigenschaftenfenster ändern Sie die MaxLength -Einstellung in 50. dadurch werden die Daten, die in username gespeichert werden können, auf 50 ZeichenRight-click on the Username property on the design surface and select Properties, In the Properties window change the MaxLength setting to 50 This restricts the data that can be stored in username to 50 characters

  • Hinzufügen einer DisplayName -Skalareigenschaft zur Benutzer EntitätAdd a DisplayName scalar property to the User entity

Wir haben jetzt ein aktualisiertes Modell, und wir können die Datenbank aktualisieren, um den neuen Benutzer Entitätstyp aufzunehmen.We now have an updated model and we are ready to update the database to accommodate our new User entity type.

  • Klicken Sie mit der rechten Maustaste auf die Entwurfs Oberfläche, und wählen Sie Datenbank aus Modell generieren... aus, Entity Framework ein Skript berechnen, um ein Schema basierend auf dem aktualisierten Modell neu zu erstellen.Right-click on the design surface and select Generate Database from Model…, Entity Framework will calculate a script to recreate a schema based on the updated model.
  • Klicken Sie auf Fertig stellen.Click Finish
  • Sie erhalten möglicherweise Warnungen zum Überschreiben des vorhandenen DDL-Skripts und die Zuordnung und Speicher Teile des Modells. Klicken Sie für beide Warnungen auf " Ja ".You may receive warnings about overwriting the existing DDL script and the mapping and storage parts of the model, click Yes for both these warnings
  • Das aktualisierte SQL-Skript zum Erstellen der Datenbank wird für Sie geöffnet.The updated SQL script to create the database is opened for you
    Das Skript, das generiert wird, löscht alle vorhandenen Tabellen und erstellt das Schema neu. Dies funktioniert möglicherweise für die lokale Entwicklung, ist jedoch nicht für das Übertragen von Änderungen an eine Datenbank geeignet, die bereits bereitgestellt wurde. Wenn Sie Änderungen an einer Datenbank veröffentlichen müssen, die bereits bereitgestellt wurde, müssen Sie das Skript bearbeiten oder ein Schema Vergleichstool verwenden, um ein Migrations Skript zu berechnen.The script that is generated will drop all existing tables and then recreate the schema from scratch. This may work for local development but is not a viable for pushing changes to a database that has already been deployed. If you need to publish changes to a database that has already been deployed, you will need to edit the script or use a schema compare tool to calculate a migration script.
  • Klicken Sie mit der rechten Maustaste auf das Skript, und wählen Sie Ausführenaus. Sie werden aufgefordert, die Datenbank anzugeben, mit der eine Verbindung hergestellt werden soll, und localdb oder SQL Server Express anzugeben, abhängig von der verwendeten Version von Visual Studio.Right-click on the script and select Execute, you will be prompted to specify the database to connect to, specify LocalDB or SQL Server Express, depending on which version of Visual Studio you are using

ZusammenfassungSummary

In dieser exemplarischen Vorgehensweise haben wir uns mit Model First Entwicklung beschäftigt, mit der wir ein Modell im EF-Designer erstellen und dann eine Datenbank aus diesem Modell generieren konnten.In this walkthrough we looked at Model First development, which allowed us to create a model in the EF Designer and then generate a database from that model. Anschließend haben wir das Modell verwendet, um Daten aus der Datenbank zu lesen und zu schreiben.We then used the model to read and write some data from the database. Schließlich haben wir das Modell aktualisiert und dann das Datenbankschema neu erstellt, um es mit dem Modell zu vergleichen.Finally, we updated the model and then recreated the database schema to match the model.