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 einen Entitätstyp zwei Tabellen zuordnen, indem Sie ein Modell mit dem Entity Framework Designer (EF Designer) ändern. Sie können eine Entität mehreren Tabellen zuordnen, wenn die Tabellen einen gemeinsamen Schlüssel verwenden. Die Konzepte, die zum Zuordnen eines Entitätstyps zu zwei Tabellen gelten, können problemlos erweitert werden, um einen Entitätstyp mehr als zwei Tabellen zuzuordnen.
Die folgende Abbildung zeigt die Hauptfenster, die beim Arbeiten mit dem EF Designer verwendet werden.
Voraussetzungen
Visual Studio 2012 oder Visual Studio 2010, Ultimate, Premium, Professional oder Web Express Edition.
Erstellen der Datenbank
Der Datenbankserver, der mit Visual Studio installiert ist, unterscheidet sich je nach installierter Version von Visual Studio:
- Wenn Sie Visual Studio 2012 verwenden, erstellen Sie eine LocalDB-Datenbank.
- Wenn Sie Visual Studio 2010 verwenden, erstellen Sie eine SQL Express-Datenbank.
Zunächst erstellen wir eine Datenbank mit zwei Tabellen, die wir in einer einzigen Entität kombinieren werden.
- Öffnen Sie Visual Studio.
- Ansicht –> Server-Explorer
- Klicken Sie mit der rechten Maustaste auf Datenverbindungen –> Verbindung hinzufügen...
- Wenn Sie im Server-Explorer noch keine Verbindung mit einer Datenbank hergestellt haben, müssen Sie Microsoft SQL Server als Datenquelle auswählen.
- Herstellen einer Verbindung mit LocalDB oder SQL Express, je nachdem, welches Sie installiert haben
- Geben Sie EntitySplitting als Datenbanknamen ein.
- Wählen Sie "OK" aus, und Sie werden gefragt, ob Sie eine neue Datenbank erstellen möchten, wählen Sie "Ja" aus.
- Die neue Datenbank wird nun im Server-Explorer angezeigt.
- Wenn Sie Visual Studio 2012 verwenden
- Klicken Sie im Server-Explorer mit der rechten Maustaste auf die Datenbank, und wählen Sie "Neue Abfrage" aus.
- Kopieren Sie die folgende SQL-Datei in die neue Abfrage, klicken Sie dann mit der rechten Maustaste auf die Abfrage, und wählen Sie "Ausführen" aus.
- Wenn Sie Visual Studio 2010 verwenden
- Daten auswählen –> Transact SQL-Editor –> Neue Abfrageverbindung...
- Geben Sie .\SQLEXPRESS als Servernamen ein, und klicken Sie auf 'OK'.
- Wählen Sie die EntitySplitting-Datenbank aus der Dropdownliste oben im Abfrage-Editor aus.
- Kopieren Sie den folgenden SQL-Code in die neue Abfrage, klicken Sie dann mit der rechten Maustaste auf die Abfrage, und wählen Sie "SQL ausführen" aus.
CREATE TABLE [dbo].[Person] (
[PersonId] INT IDENTITY (1, 1) NOT NULL,
[FirstName] NVARCHAR (200) NULL,
[LastName] NVARCHAR (200) NULL,
CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED ([PersonId] ASC)
);
CREATE TABLE [dbo].[PersonInfo] (
[PersonId] INT NOT NULL,
[Email] NVARCHAR (200) NULL,
[Phone] NVARCHAR (50) NULL,
CONSTRAINT [PK_PersonInfo] PRIMARY KEY CLUSTERED ([PersonId] ASC),
CONSTRAINT [FK_Person_PersonInfo] FOREIGN KEY ([PersonId]) REFERENCES [dbo].[Person] ([PersonId]) ON DELETE CASCADE
);
Erstellen des Projekts
- 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 "MapEntityToTablesSample " als Namen des Projekts ein, und klicken Sie auf "OK".
- Klicken Sie auf "Nein ", wenn Sie aufgefordert werden, die im ersten Abschnitt erstellte SQL-Abfrage zu speichern.
Erstellen eines Modells basierend auf der 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 Entity Data Model aus.
- Geben Sie "MapEntityToTablesModel.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".
- Wählen Sie die EntitySplitting-Verbindung aus der Dropdownliste aus, und klicken Sie auf "Weiter".
- Aktivieren Sie im Dialogfeld "Datenbankobjekte auswählen" das Kontrollkästchen neben dem Knoten "Tabellen ". Dadurch werden alle Tabellen aus der EntitySplitting-Datenbank zum Modell hinzugefügt.
- Klicken Sie auf Fertig stellen.
Der Entitäts-Designer, der eine Entwurfsoberfläche zum Bearbeiten des Modells bereitstellt, wird angezeigt.
Zuordnen einer Entität zu zwei Tabellen
In diesem Schritt aktualisieren wir den Entitätstyp "Person ", um Daten aus den Tabellen " Person " und " PersonInfo " zu kombinieren.
Wählen Sie die Eigenschaften "E-Mail" und "Telefon " der Entität **PersonInfo **, und drücken Sie STRG+X .
Wählen Sie die **Person**-Entität aus, und drücken Sie STRG+V.
Wählen Sie auf der Entwurfsoberfläche die PersonInfo-Entität aus, und drücken Sie die Löschen-Taste auf der Tastatur.
Klicken Sie auf "Nein ", wenn Sie gefragt werden, ob Sie die Tabelle "PersonInfo " aus dem Modell entfernen möchten, wir sind dabei, sie der Person-Entität zuzuordnen.
Für die nächsten Schritte ist das Fenster "Zuordnungsdetails " erforderlich. 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 "Person" aus, und klicken Sie im Fenster <" auf ">Tabelle oder Ansicht hinzufügen".
- Wählen Sie **PersonInfo ** aus der Dropdownliste aus. Das Fenster "Zuordnungsdetails " wird mit Standardspaltenzuordnungen aktualisiert, dies ist für unser Szenario in Ordnung.
Der Entitätstyp "Person " ist nun den Tabellen " Person " und "PersonInfo " zugeordnet.
Modell verwenden
- Fügen Sie den folgenden Code in die Main-Methode ein.
using (var context = new EntitySplittingEntities())
{
var person = new Person
{
FirstName = "John",
LastName = "Doe",
Email = "john@example.com",
Phone = "555-555-5555"
};
context.People.Add(person);
context.SaveChanges();
foreach (var item in context.People)
{
Console.WriteLine(item.FirstName);
}
}
- 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 Datenbank ausgeführt.
Die folgenden beiden INSERT-Anweisungen wurden als Ergebnis der Ausführung von context.SaveChanges() ausgeführt. Sie nehmen die Daten aus der Person-Entität und teilen sie zwischen den Tabellen "Person " und "PersonInfo " auf.
Die folgende SELECT wurde als Ergebnis der Aufzählung der Personen in der Datenbank ausgeführt. Sie kombiniert die Daten aus der Tabelle " Person " und " PersonInfo ".