Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
Alleen EF5 en later: De functies, API's, enzovoort, die op deze pagina worden besproken, zijn geïntroduceerd in Entity Framework 5. Als u een eerdere versie gebruikt, zijn sommige of alle gegevens niet van toepassing.
In de video en stapsgewijze procedure ziet u hoe u ruimtelijke typen kunt toewijzen met de Entity Framework Designer. Ook ziet u hoe u een LINQ-query gebruikt om een afstand tussen twee locaties te vinden.
In deze handleiding wordt Model First gebruikt om een nieuwe database te maken, maar de EF Designer kan ook worden gebruikt met de Database First workflow om een bestaande database in kaart te brengen.
Ondersteuning voor ruimtelijke typen is geïntroduceerd in Entity Framework 5. Houd er rekening mee dat als u de nieuwe functies zoals ruimtelijke functies, opsommingen en tabelwaarden wilt gebruiken, u .NET Framework 4.5 moet gebruiken. Visual Studio 2012 is standaard gericht op .NET 4.5.
Als u ruimtelijke gegevenstypen wilt gebruiken, moet u ook een Entity Framework-provider met ruimtelijke ondersteuning gebruiken. Zie ondersteuning door aanbieders voor ruimtelijke typen voor meer informatie.
Er zijn twee belangrijke ruimtelijke gegevenstypen: geografie en geometrie. In het gegevenstype geografie worden ellipsoïdale gegevens opgeslagen (bijvoorbeeld GPS-breedte- en lengtegraadcoördinaten). Het gegevenstype geometrie vertegenwoordigt het coördinaatsysteem Euclidean (plat).
Bekijk de video
In deze video ziet u hoe u ruimtelijke typen kunt toewijzen met de Entity Framework Designer. Ook ziet u hoe u een LINQ-query gebruikt om een afstand tussen twee locaties te vinden.
Gepresenteerd door: Julia Kornich
Voorafgaande Vereisten
U moet Visual Studio 2012, editie Ultimate, Premium, Professional of Web Express, geïnstalleerd hebben om deze handleiding te voltooien.
Het project instellen
- Visual Studio 2012 openen
- Wijs in het menu Bestand de optie Nieuw aan en klik op Project
- Klik in het linkerdeelvenster op Visual C# en selecteer vervolgens de consolesjabloon
- Voer SpatialEFDesigner in als de naam van het project en klik op OK
Een nieuw model maken met de EF Designer
- Klik met de rechtermuisknop op de projectnaam in Solution Explorer, wijs toevoegen aan en klik vervolgens op Nieuw item
- Selecteer Gegevens in het linkermenu en selecteer vervolgens ADO.NET Entity Data Model in het deelvenster Sjablonen
- Voer UniversityModel.edmx in als bestandsnaam en klik vervolgens op Toevoegen
- Selecteer Leeg model in het dialoogvenster Modelinhoud kiezen op de pagina Wizard Entiteitsgegevensmodel.
- Klik op Voltooien
De Entity Designer, die een ontwerpoppervlak biedt voor het bewerken van uw model, wordt weergegeven.
De wizard voert de volgende acties uit:
- Hiermee genereert u het EnumTestModel.edmx-bestand dat het conceptuele model, het opslagmodel en de toewijzing daartussen definieert. Hiermee stelt u de eigenschap Verwerking van metagegevensartefacten van het .edmx-bestand in op Insluiten in uitvoerassembly, zodat de gegenereerde metagegevensbestanden worden ingesloten in de assembly.
- Voegt een verwijzing toe naar de volgende assembly's: EntityFramework, System.ComponentModel.DataAnnotations en System.Data.Entity.
- Hiermee maakt u UniversityModel.tt en UniversityModel.Context.tt bestanden en voegt u ze toe onder het EDMX-bestand. Deze T4-sjabloonbestanden genereren de code die het afgeleide DbContext-type en POCO-typen definieert die zijn toegewezen aan de entiteiten in het .edmx-model
Een nieuw entiteitstype toevoegen
- Klik met de rechtermuisknop op een leeg gebied van het ontwerpoppervlak, selecteer Toevoegen -> Entiteit, het dialoogvenster Nieuwe entiteit wordt weergegeven
- Geef University op voor de typenaam en geef UniversityID op voor de naam van de sleuteleigenschap, laat het type staan als Int32
- Klik op OK
- Klik met de rechtermuisknop op de entiteit en selecteer Nieuwe toevoegen -> Scalaire eigenschap
- De naam van de nieuwe eigenschap wijzigen in Naam
- Voeg nog een scalaire eigenschap toe en wijzig de naam ervan in Location Open het venster Eigenschappen en wijzig het type van de nieuwe eigenschap in Geografie
- Sla het model op en bouw het project
Opmerking
Wanneer u bouwt, kunnen waarschuwingen over niet-toegewezen entiteiten en koppelingen worden weergegeven in de lijst met fouten. U kunt deze waarschuwingen negeren omdat de fouten verdwijnen nadat we ervoor hebben gekozen om de database te genereren op basis van het model.
Database genereren op model
Nu kunnen we een database genereren die is gebaseerd op het model.
- Klik met de rechtermuisknop op een lege ruimte op het gebied van Entity Designer en selecteer Database genereren in model
- Het dialoogvenster Data Verbinding Kiezen van de Wizard Database Genereren wordt weergegeven. Klik op de knop Nieuwe verbinding. Geef (localdb)\mssqllocaldb op voor de servernaam en Universiteit voor de database en klik op OK.
- Een dialoogvenster waarin wordt gevraagd of u een nieuwe database wilt maken, klikt u op Ja.
- Klik op Volgende en de wizard Database maken genereert DDL (Data Definition Language) voor het maken van een database. De gegenereerde DDL wordt weergegeven in het dialoogvenster Samenvatting en instellingen. Houd er rekening mee dat de DDL geen definitie bevat voor een tabel die is toegewezen aan het opsommingstype
- Klik op Voltooien als u op Voltooien klikt, voert het DDL-script niet uit.
- De Wizard Database Maken doet het volgende: opent het bestand UniversityModel.edmx.sql in de T-SQL-editor genereert het storeschema en de toewijzingssecties van het EDMX-bestand voegt informatie over de verbindingsreeks toe aan het App.config-bestand
- Klik met de rechtermuisknop in de T-SQL-editor en selecteer Uitvoeren. Het dialoogvenster Verbinding maken met server verschijnt, voer de verbindingsgegevens uit stap 2 in en klik op Verbinding maken.
- Als u het gegenereerde schema wilt weergeven, klikt u met de rechtermuisknop op de databasenaam in SQL Server Object Explorer en selecteert u Vernieuwen
Gegevens behouden en ophalen
Open het Program.cs-bestand waarin de main-methode is gedefinieerd. Voeg de volgende code toe aan de functie Main.
De code voegt twee nieuwe Universiteitsobjecten toe aan de context. Ruimtelijke eigenschappen worden geïnitialiseerd met behulp van de methode DbGeography.FromText. Het geografische punt dat wordt weergegeven als WellKnownText, wordt doorgegeven aan de methode. De code slaat vervolgens de gegevens op. Vervolgens wordt de LINQ-query die een Universiteitsobject retourneert waar de locatie zich het dichtst bij de opgegeven locatie bevindt, gebouwd en uitgevoerd.
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);
}
Compileer de toepassing en voer deze uit. Het programma produceert de volgende uitvoer:
The closest University to you is: School of Fine Art.
Als u gegevens in de database wilt weergeven, klikt u met de rechtermuisknop op de databasenaam in SQL Server Object Explorer en selecteert u Vernieuwen. Klik vervolgens op de rechtermuisknop in de tabel en selecteer Gegevens weergeven.
Overzicht
In deze handleiding hebben we bekeken hoe ruimtelijke typen toegewezen worden met behulp van Entity Framework Designer en hoe je ruimtelijke typen kunt gebruiken in de code.