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.
Hinweis
NUR AB EF5 – Die auf dieser Seite besprochenen Features, APIs usw. wurden in Entity Framework 5 eingeführt. Wenn Sie eine frühere Version verwenden, gelten einige oder alle Informationen nicht.
Das Video und die schrittweise Anleitung zeigt, wie räumliche Typen mit dem Entity Framework-Designer abgebildet werden. Außerdem wird veranschaulicht, wie sie eine LINQ-Abfrage verwenden, um einen Abstand zwischen zwei Speicherorten zu finden.
In dieser exemplarischen Vorgehensweise wird "Model First" verwendet, um eine neue Datenbank zu erstellen, aber der EF-Designer kann auch mit dem Database First Workflow verwendet werden, um eine vorhandene Datenbank zuzuordnen.
Die Unterstützung für räumliche Typen wurde in Entity Framework 5 eingeführt. Beachten Sie, dass Sie für die Verwendung der neuen Features wie räumlichen Typ, Enumerationen und Tabellenwertfunktionen .NET Framework 4.5 verwenden müssen. Visual Studio 2012 zielt standardmäßig auf .NET 4.5 ab.
Um räumliche Datentypen zu verwenden, müssen Sie auch einen Entity Framework-Anbieter verwenden, der räumliche Unterstützung hat. Weitere Informationen finden Sie unter Provider-Unterstützung für räumliche Typen.
Es gibt zwei haupträumische Datentypen: Geografie und Geometrie. Der Geografische Datentyp speichert ellipsoidale Daten (z. B. GPS-Breiten- und Längengradkoordinaten). Der Geometriedatentyp stellt euklidean (flaches) Koordinatensystem dar.
Sehen Sie sich das Video an
In diesem Video wird gezeigt, wie Räumliche Typen mit dem Entity Framework-Designer zugeordnet werden. Außerdem wird veranschaulicht, wie sie eine LINQ-Abfrage verwenden, um einen Abstand zwischen zwei Speicherorten zu finden.
Präsentiert von: Julia Kornich
Voraussetzungen
Sie müssen Visual Studio 2012, Ultimate, Premium, Professional oder Web Express Edition installiert haben, um diese exemplarische Vorgehensweise abzuschließen.
Einrichten des Projekts
- Öffnen von 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 Konsolenvorlage aus.
- Geben Sie "SpatialEFDesigner" als Namen des Projekts ein, und klicken Sie auf "OK".
Erstellen eines neuen Modells mithilfe des EF-Designers
- 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ü und dann im Bereich "Vorlagen " ADO.NET Entitätsdatenmodell aus.
- Geben Sie "UniversityModel.edmx " für den Dateinamen ein, und klicken Sie dann auf "Hinzufügen".
- Wählen Sie auf der Seite "Entitätsdatenmodell-Assistent" im Dialogfeld "Modellinhalt auswählen " die Option "Leeres Modell " aus.
- Klicken Sie auf Fertig stellen.
Der Entitäts-Designer, der eine Entwurfsoberfläche zum Bearbeiten des Modells bereitstellt, wird angezeigt.
Der Assistent führt die folgenden Aktionen aus:
- Generiert die EnumTestModel.edmx-Datei, die das konzeptionelle Modell, das Speichermodell und die Zuordnung zwischen ihnen definiert. Legt die Eigenschaft 'Metadaten-Artefaktverarbeitung' der .edmx-Datei auf "In Ausgabeassembly einbetten" fest, sodass die generierten Metadatendateien in die Assembly eingebettet werden.
- Fügt einen Verweis auf die folgenden Assemblys hinzu: EntityFramework, System.ComponentModel.DataAnnotations und System.Data.Entity.
- Erstellt UniversityModel.tt und UniversityModel.Context.tt Dateien und fügt sie unter der EDMX-Datei hinzu. Diese T4-Vorlagendateien generieren den Code, der den von DbContext abgeleiteten Typ und POCO-Typen definiert, die den Entitäten im edmx-Modell zugeordnet sind
Hinzufügen eines neuen Entitätstyps
- Klicken Sie mit der rechten Maustaste auf einen leeren Bereich der Entwurfsoberfläche, wählen Sie "Hinzufügen –> Entität" aus, das Dialogfeld "Neue Entität" wird angezeigt.
- Geben Sie University für den Typnamen an, und geben Sie UniversityID für den Schlüsseleigenschaftsnamen an, lassen Sie den Typ als Int32
- Klicken Sie auf OK
- Klicken Sie mit der rechten Maustaste auf die Entität, und wählen Sie "Neu hinzufügen "> Skalareigenschaft" aus.
- Benennen Sie die neue Eigenschaft in "Name" um.
- Fügen Sie eine weitere skalare Eigenschaft hinzu, und benennen Sie sie in "Location Öffnen des Eigenschaftenfensters" um, und ändern Sie den Typ der neuen Eigenschaft in "Geography".
- Speichern des Modells und Erstellen des Projekts
Hinweis
Beim Erstellen könnten Warnungen zu nicht zugeordneten Entitäten und Zuordnungen in der Fehlerliste erscheinen. Sie können diese Warnungen ignorieren, da nach der Auswahl, die Datenbank aus dem Modell zu generieren, die Fehler nicht mehr auftreten.
Datenbank anhand des Modells generieren
Jetzt können wir eine Datenbank generieren, die auf dem Modell basiert.
- Klicken Sie mit der rechten Maustaste auf der Entitäts-Designer-Oberfläche auf ein leeres Leerzeichen, und wählen Sie "Datenbank aus Modell generieren" aus.
- Das Dialogfeld 'Datenverbindung auswählen' des Assistenten 'Datenbank generieren' wird angezeigt, klicken Sie auf die Schaltfläche ' Neue Verbindung angeben '(localdb)\mssqllocaldb ' für den Servernamen und die Universität für die Datenbank, und klicken Sie auf 'OK'.
- Ein Dialogfeld, in dem Sie gefragt werden, ob eine neue Datenbank erstellt werden soll, klicken Sie auf "Ja".
- Klicken Sie auf Weiter und der Assistent zum Erstellen von Datenbanken generiert Datendefinitionssprache (DDL) zum Erstellen einer Datenbank. Die generierte DDL wird im Dialogfeld "Zusammenfassung und Einstellungen" angezeigt. Beachten Sie, dass die DDL keine Definition für eine Tabelle enthält, die dem Enumerationstyp zugeordnet ist.
- Klicken Sie auf Fertig. Das Klicken auf "Fertig" führt das DDL-Skript nicht aus.
- Der Assistent zum Erstellen von Datenbanken führt folgendes aus: Öffnet die UniversityModel.edmx.sql im T-SQL-Editor Generiert das Speicherschema und Zuordnungsabschnitte der EDMX-Datei fügt der App.config Datei Verbindungszeichenfolgeninformationen hinzu.
- Klicken Sie im T-SQL-Editor mit der rechten Maustaste und wählen Sie Ausführen. Der Dialog "Verbinden mit Server" erscheint, geben Sie die Verbindungsinformationen aus Schritt 2 ein und klicken Sie auf Verbinden.
- Um das generierte Schema anzuzeigen, klicken Sie im SQL Server-Objekt-Explorer mit der rechten Maustaste auf den Datenbanknamen, und wählen Sie "Aktualisieren" aus.
Speichern und Abrufen von Daten
Öffnen Sie die Program.cs Datei, in der die Main-Methode definiert ist. Fügen Sie der Hauptfunktion den folgenden Code hinzu.
Der Code fügt dem Kontext zwei neue University-Objekte hinzu. Räumliche Eigenschaften werden mithilfe der DbGeography.FromText-Methode initialisiert. Der geografiene Punkt, der als WellKnownText dargestellt wird, wird an die Methode übergeben. Der Code speichert dann die Daten. Anschließend wird die LINQ-Abfrage konstruiert und ausgeführt, die ein University-Objekt zurückgibt, dessen Standort der angegebenen Position am nächsten liegt.
using (var context = new UniversityModelContainer())
{
context.Universities.Add(new University()
{
Name = "Graphic Design Institute",
Location = DbGeography.FromText("POINT(-122.336106 47.605049)"),
});
context.Universities.Add(new University()
{
Name = "School of Fine Art",
Location = DbGeography.FromText("POINT(-122.335197 47.646711)"),
});
context.SaveChanges();
var myLocation = DbGeography.FromText("POINT(-122.296623 47.640405)");
var university = (from u in context.Universities
orderby u.Location.Distance(myLocation)
select u).FirstOrDefault();
Console.WriteLine(
"The closest University to you is: {0}.",
university.Name);
}
Kompilieren Sie die Anwendung, und führen Sie sie aus. Das Programm erzeugt die folgende Ausgabe:
The closest University to you is: School of Fine Art.
Um Daten in der Datenbank anzuzeigen, klicken Sie im SQL Server-Objekt-Explorer mit der rechten Maustaste auf den Datenbanknamen, und wählen Sie "Aktualisieren" aus. Klicken Sie dann auf die rechte Maustaste auf der Tabelle, und wählen Sie "Daten anzeigen" aus.
Zusammenfassung
In dieser exemplarischen Vorgehensweise haben wir untersucht, wie räumliche Typen mithilfe des Entity Framework-Designers zugeordnet und räumliche Typen im Code verwendet werden.