Aufteilen von Designer TabellenDesigner Table Splitting

In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie Sie mehrere Entitäts Typen einer einzelnen Tabelle zuordnen, indem Sie ein Modell mit dem Entity Framework Designer (EF-Designer) ändern.This walkthrough shows how to map multiple entity types to a single table by modifying a model with the Entity Framework Designer (EF Designer).

Ein Grund, warum Sie die Tabellen Aufteilung verwenden möchten, verzögert das Laden einiger Eigenschaften, wenn Lazy Loading zum Laden der Objekte verwendet wird.One reason you may want to use table splitting is delaying the loading of some properties when using lazy loading to load your objects.Sie können die Eigenschaften, die möglicherweise sehr große Datenmengen enthalten, in eine separate Entität aufteilen und Sie nur bei Bedarf laden. You can separate the properties that might contain very large amount of data into a separate entity and only load it when required.

Die folgende Abbildung zeigt die Hauptfenster, die bei der Arbeit mit dem EF-Designer verwendet werden.The following image shows the main windows that are used when working with the EF Designer.

EF-Designer

VoraussetzungenPrerequisites

Um die exemplarische Vorgehensweise nachzuvollziehen, benötigen Sie Folgendes:To complete this walkthrough, you will need:

Einrichten des ProjektsSet up the Project

In dieser exemplarischen Vorgehensweise wird Visual Studio 2012 verwendet.This walkthrough is using Visual Studio 2012.

  • Öffnen Sie Visual Studio 2012.Open Visual Studio 2012.
  • Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.On the File menu, point to New, and then click Project.
  • Klicken Sie im linken Bereich auf Visual C # , und wählen Sie dann die Vorlage Konsolenanwendung aus.In the left pane, click Visual C#, and then select the Console Application template.
  • Geben Sie tablesplittingsample als Namen für das Projekt ein, und klicken Sie auf OK.Enter TableSplittingSample as the name of the project and click OK.

Erstellen eines Modells auf der Grundlage der Datenbank "School"Create a Model based on the School Database

  • Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.Right-click the project name in Solution Explorer, point to Add, and then click New Item.
  • Wählen Sie im linken Menü Daten aus, und wählen Sie dann im Bereich Vorlagen die Option ADO.NET Entity Data Model aus.Select Data from the left menu and then select ADO.NET Entity Data Model in the Templates pane.
  • Geben Sie als Dateiname tablesplittingmodel. edmx ein, und klicken Sie dann auf Hinzufügen.Enter TableSplittingModel.edmx for the file name, and then click Add.
  • Wählen Sie im Dialogfeld Modell Inhalte auswählen die Option aus Datenbank generieren aus, und klicken Sie dann auf Weiter.In the Choose Model Contents dialog box, select Generate from database, and then click Next.
  • Klicken Sie auf neue Verbindung.Click New Connection. Geben Sie im Dialogfeld Verbindungs Eigenschaften den Servernamen ein (z. b. (localdb) \ mssqllocaldb), wählen Sie die Authentifizierungsmethode aus, geben Sie School   als Datenbanknamen School ein, und klicken Sie dann auf OK.In the Connection Properties dialog box, enter the server name (for example, (localdb)\mssqllocaldb), select the authentication method, type School for the database name, and then click OK. Das Dialogfeld Wählen Sie Ihre Datenverbindung aus wird mit Ihrer Daten bankverbindungs Einstellung aktualisiert.The Choose Your Data Connection dialog box is updated with your database connection setting.
  • Erweitern Sie im Dialogfeld Wählen Sie Ihre Datenbankobjekte aus den Knoten Tabellen,   und überprüfen Sie die Tabelle Person .In the Choose Your Database Objects dialog box, unfold the Tables node and check the Person table. Dadurch wird die angegebene Tabelle dem Modell " School " hinzugefügt.This will add the specified table to the School model.
  • Klicken Sie auf Finish.Click Finish.

Die Entity Designer, die eine Entwurfs Oberfläche zum Bearbeiten des Modells bereitstellt, wird angezeigt.The Entity Designer, which provides a design surface for editing your model, is displayed. Alle Objekte, die Sie im Dialogfeld Wählen Sie Ihre Datenbankobjekteausgewählt   haben, werden dem Modell hinzugefügt.All the objects that you selected in the Choose Your Database Objects dialog box are added to the model.

Ordnen Sie zwei Entitäten einer einzelnen Tabelle zu.Map Two Entities to a Single Table

In diesem Abschnitt teilen Sie die Entität Person in zwei Entitäten auf und ordnen Sie dann einer einzelnen Tabelle zu.In this section you will split the Person entity into two entities and then map them to a single table.

Hinweis

Die Person -Entität enthält keine Eigenschaften, die möglicherweise eine große Datenmenge enthalten. Sie wird nur als Beispiel verwendet.The Person entity does not contain any properties that may contain large amount of data; it is just used as an example.

  • Klicken Sie mit der rechten Maustaste auf einen leeren Bereich der Entwurfs Oberfläche, zeigen Sie auf Neu hinzufügen, und klicken Sie auf Entität.Right-click an empty area of the design surface, point to Add New, and click Entity. Das Dialogfeld neue Entitätwird   angezeigt.The New Entity dialog box appears.
  • Geben Sie   als Entitäts Name und PersonID als Name der Schlüsseleigenschaft hireinfo ein.Type HireInfo for the Entity name and PersonID for the Key Property name.
  • Klicken Sie auf OK.Click OK.
  • Ein neuer Entitätstyp wird erstellt und auf der Entwurfsoberfläche angezeigt.A new entity type is created and displayed on the design surface.
  • Wählen Sie die HireDate   -Eigenschaft des Entitäts Typs Personaus,   und drücken Sie STRG + X -Taste.Select the HireDate property of the Person entity type and press Ctrl+X keys.
  • Wählen Sie die hireinfo   -Entität aus, und drücken Sie STRG + V Tasten.Select the HireInfo entity and press Ctrl+V keys.
  • Erstellen Sie eine Zuordnung zwischen Person und hireinfo.Create an association between Person and HireInfo. Klicken Sie hierzu mit der rechten Maustaste auf einen leeren Bereich der Entwurfs Oberfläche, zeigen Sie auf Neu hinzufügenund klicken Sie dann auf Zuordnung.To do this, right-click an empty area of the design surface, point to Add New, and click Association.
  • Das Dialogfeld Zuordnung Hinzufügenwird   angezeigt.The Add Association dialog box appears. Der personhireinfo -Name wird standardmäßig angegeben.The PersonHireInfo name is given by default.
  • Geben Sie die Multiplizität 1 (eins) an beiden Enden der Beziehung an.Specify multiplicity 1(One) on both ends of the relationship.
  • Klicken Sie auf OK.Press OK.

Der nächste Schritt erfordert das Fenster " Mappingdetails"   .The next step requires the Mapping Details window. Wenn dieses Fenster nicht angezeigt wird, klicken Sie mit der rechten Maustaste auf die Entwurfs Oberfläche, und wählen Sie Mappingdetails.If you cannot see this window, right-click the design surface and select Mapping Details.

  • Wählen Sie den hireinfo   -Entitätstyp aus, und klicken Sie im Fenster Mappingdetails auf ** < Tabelle oder Sicht > Hinzufügen**    Mapping Details   .Select the HireInfo entity type and click <Add a Table or View> in the Mapping Details window.

  • Wählen Sie in der Dropdown Liste ** < Tabelle oder > Sicht hinzufügen**die Option Person aus   .Select Person from the <Add a Table or View> field drop-down list. Die Liste enthält Tabellen oder Sichten, denen die ausgewählte Entität zugeordnet werden kann.The list contains tables or views to which the selected entity can be mapped. Die entsprechenden Eigenschaften sollten standardmäßig zugeordnet werden.The appropriate properties should be mapped by default.

    Mapping-Eigenschaften

  • Wählen Sie auf der Entwurfs Oberfläche die Zuordnung personhireinfo aus.Select the PersonHireInfo association on the design surface.

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

  • Wählen Sie im Fenster Eigenschaften die Eigenschaft Referenzielle Einschränkungen aus, und klicken Sie auf die Schaltfläche mit den Auslassungs Punkten.In the Properties window, select the Referential Constraints property and click the ellipses button.

  • Wählen Sie in der Dropdown Liste Prinzipal die Option Person aus.Select Person from the Principal drop-down list.

  • Klicken Sie auf OK.Press OK.

 

Verwenden des ModellsUse the Model

  • Fügen Sie den folgenden Code in die Main-Methode ein.Paste the following code in the Main method.
    using (var context = new SchoolEntities())
    {
        Person person = new Person()
        {
            FirstName = "Kimberly",
            LastName = "Morgan",
            Discriminator = "Instructor",
        };

        person.HireInfo = new HireInfo()
        {
            HireDate = DateTime.Now
        };

        // Add the new person to the context.
        context.People.Add(person);

        // Insert a row into the Person table.  
        context.SaveChanges();

        // Execute a query against the Person table.
        // The query returns columns that map to the Person entity.
        var existingPerson = context.People.FirstOrDefault();

        // Execute a query against the Person table.
        // The query returns columns that map to the Instructor entity.
        var hireInfo = existingPerson.HireInfo;

        Console.WriteLine("{0} was hired on {1}",
            existingPerson.LastName, hireInfo.HireDate);
    }
  • Kompilieren Sie die Anwendung, und führen Sie sie aus.Compile and run the application.

Die folgenden T-SQL-Anweisungen wurden als Ergebnis der Ausführung dieser Anwendung für die Datenbank " School " ausgeführt.The following T-SQL statements were executed against the School database as a result of running this application. 

  • Der folgende Insert-Vorgang wurde als Ergebnis der Ausführung des Kontexts ausgeführt. SaveChanges () und kombiniert Daten aus den Entitäten Person und hireinfo .The following INSERT was executed as a result of executing context.SaveChanges() and combines data from the Person and HireInfo entities

    Einfügen von Person-und hireinfo-Daten

  • Die folgende Select -Anweisung wurde als Ergebnis der Ausführung des Kontexts ausgeführt. People. FirstOrDefault () und wählt nur die Spalten aus, die Person zugeordnet sind.The following SELECT was executed as a result of executing context.People.FirstOrDefault() and selects just the columns mapped to Person

    Wählen Sie 1 aus.

  • Die folgende Select -Anweisung wurde als Ergebnis des Zugriffs auf die Navigations Eigenschaft existingperson. Instructor ausgeführt und wählt nur die Spalten aus, die hireinfo zugeordnet sind.The following SELECT was executed as a result of accessing the navigation property existingPerson.Instructor and selects just the columns mapped to HireInfo

    2 auswählen