Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie einer einzelnen Tabelle mehrere Entitätstypen zuordnen, indem Sie ein Modell mit dem Entity Framework Designer (EF Designer) ändern.
Ein Grund, warum Sie Table Splitting verwenden möchten, ist die Verzögerung des Ladens einiger Eigenschaften, wenn Sie Lazy Loading verwenden, um Ihre Objekte zu laden. Sie können die Eigenschaften, die sehr große Datenmengen enthalten können, in eine separate Entität trennen und nur bei Bedarf laden.
Die folgende Abbildung zeigt die Hauptfenster, die beim Arbeiten mit dem EF Designer verwendet werden.
Voraussetzungen
Um diese exemplarische Vorgehensweise abzuschließen, benötigen Sie:
- Eine aktuelle Version von Visual Studio.
- Die Schule-Beispieldatenbank.
Einrichten des Projekts
In dieser Schritt-für-Schritt-Anleitung wird Visual Studio 2012 verwendet.
- Öffnen Sie Visual Studio 2012.
- Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
- Klicken Sie im linken Bereich auf Visual C#, und wählen Sie dann die Konsolenanwendungsvorlage aus.
- Geben Sie "TableSplittingSample" als Namen des Projekts ein, und klicken Sie auf "OK".
Erstellen eines Modells basierend auf der School-Datenbank
- Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, zeigen Sie auf "Hinzufügen", und klicken Sie dann auf "Neues Element".
- Wählen Sie " Daten " im linken Menü aus, und wählen Sie dann im Bereich "Vorlagen" ADO.NET Entitätsdatenmodell aus.
- Geben Sie "TableSplittingModel.edmx " für den Dateinamen ein, und klicken Sie dann auf "Hinzufügen".
- Wählen Sie im Dialogfeld "Modellinhalt auswählen" die Option " Aus Datenbank generieren" aus, und klicken Sie dann auf "Weiter".
- Klicken Sie auf "Neue Verbindung". Geben Sie im Dialogfeld "Verbindungseigenschaften" den Servernamen (z. B. (localdb)\mssqllocaldb) ein, wählen Sie die Authentifizierungsmethode aus, geben Sie "School " für den Datenbanknamen ein, und klicken Sie dann auf "OK". Das Dialogfeld "Datenverbindung auswählen" wird mit ihrer Datenbankverbindungseinstellung aktualisiert.
- Entfalten Sie im Dialogfeld "Datenbankobjekte auswählen" den Knoten "Tabellen" und wählen Sie die Tabelle "Person" aus. Dadurch wird die angegebene Tabelle dem Schulmodell hinzugefügt.
- Klicken Sie auf Fertig stellen.
Der Entitäts-Designer, der eine Entwurfsoberfläche zum Bearbeiten des Modells bereitstellt, wird angezeigt. Alle Objekte, die Sie im Dialogfeld " Datenbankobjekte auswählen " ausgewählt haben, werden dem Modell hinzugefügt.
Zuordnen von zwei Entitäten zu einer einzelnen Tabelle
In diesem Abschnitt teilen Sie die Person-Entität in zwei Entitäten auf und ordnen sie dann einer einzelnen Tabelle zu.
Hinweis
Die Person-Entität enthält keine Eigenschaften, die eine große Datenmenge enthalten können; es wird nur als Beispiel verwendet.
- Klicken Sie mit der rechten Maustaste auf einen leeren Bereich der Entwurfsoberfläche, zeigen Sie auf "Neu hinzufügen", und klicken Sie auf "Entität". Das Dialogfeld "Neue Entität " wird angezeigt.
- Geben Sie HireInfo für den Entitätsnamen und PersonID für den Schlüsseleigenschaftsname ein.
- Klicke auf OK.
- Auf der Entwurfsoberfläche wird ein neuer Entitätstyp erstellt und angezeigt.
- Wählen Sie die Eigenschaft HireDate des Entitätstyps Person aus, und drücken Sie STRG+X.
- Wählen Sie die Entität "HireInfo" aus und drücken Sie Strg+V.
- Erstellen Sie eine Zuordnung zwischen Person und HireInfo. Klicken Sie dazu mit der rechten Maustaste auf einen leeren Bereich der Entwurfsoberfläche, zeigen Sie auf Neu hinzufügen, und klicken Sie auf Zuordnung.
- Das Dialogfeld "Zuordnung hinzufügen " wird angezeigt. Der Name "PersonHireInfo " wird standardmäßig angegeben.
- Geben Sie die Multiplikation 1(1) an beiden Enden der Beziehung an.
- Klicken Sie auf OK.
Der nächste Schritt erfordert das Fenster "Zuordnungsdetails ". Wenn dieses Fenster nicht angezeigt wird, klicken Sie mit der rechten Maustaste auf die Entwurfsoberfläche, und wählen Sie "Zuordnungsdetails" aus.
Wählen Sie den Entitätstyp "HireInfo" aus, und klicken Sie im Fenster <" auf ">Tabelle oder Ansicht hinzufügen".
Wählen Sie Person aus der Dropdownliste <Tabelle oder Ansicht hinzufügen> aus. Die Liste enthält Tabellen oder Ansichten, denen die ausgewählte Entität zugeordnet werden kann. Die entsprechenden Eigenschaften sollten standardmäßig zugeordnet werden.
Wählen Sie die PersonHireInfo-Zuordnung auf der Entwurfsoberfläche aus.
Klicken Sie mit der rechten Maustaste auf die Zuordnung auf der Entwurfsoberfläche, und wählen Sie "Eigenschaften" aus.
Wählen Sie im Eigenschaftenfenster die Eigenschaft " Referenzielle Einschränkungen" aus, und klicken Sie auf die Schaltfläche mit den Auslassungspunkten.
Wählen Sie " Person " aus der Dropdownliste "Prinzipal " aus.
Klicken Sie auf OK.
Modell verwenden
- Fügen Sie den folgenden Code in die Main-Methode ein.
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.
Die folgenden T-SQL-Anweisungen wurden aufgrund der Ausführung dieser Anwendung für die School-Datenbank ausgeführt.
Das folgende INSERT wurde als Ergebnis von context.SaveChanges() ausgeführt und kombiniert Daten aus den Entitäten Person und HireInfo.
Einfügen von kombinierten Personen- und HireInfo-Daten
Die folgende SELECT-Anweisung wurde als Ergebnis der Ausführung von context.People.FirstOrDefault() ausgeführt und wählt nur die Spalten aus, die Person zugeordnet sind.
Die folgende SELECT wurde als Ergebnis des Zugriffs auf die Navigationseigenschaft existingPerson.Instructor ausgeführt und wählt nur die Spalten aus, die HireInfo zugeordnet sind.