{"id":55000042,"date":"2016-06-01T00:00:00","date_gmt":"2020-03-27T19:20:38","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=42"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Einfuehrung_in_das_Entity_Framework","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Einfuehrung_in_das_Entity_Framework\/","title":{"rendered":"Einf&uuml;hrung in das Entity Framework"},"content":{"rendered":"<p><b>In vorherigen Beitr&auml;gen haben wir gezeigt, wie Sie Fenster und Steuerelemente wie das DataGrid mit den Daten aus einem ADO.NET-DataSet f&uuml;llen k&ouml;nnen. Wenn Sie echte mehrschichtige Anwendungen bauen m&ouml;chten, gehen Sie einen Schritt weiter und nutzen einen objektrelationalen Mapper, um die Daten aus den Tabellen in Objekten abzulegen, bevor Sie diese als Datenquelle f&uuml;r die Benutzeroberfl&auml;che nutzen. Der Clou eines solchen Mappers ist, dass es sich um ein Framework handelt &#8211; das hei&szlig;t, dass Sie nur einen geringen Teil des notwendigen Codes selbst schreiben m&uuml;ssen. Dieser Artikel gibt eine kleine Einf&uuml;hrung in das Entity Framework.<\/b><\/p>\n<h2>Datenzugriff gestern und heute<\/h2>\n<p>Unter Access waren Sie es gewohnt, direkt auf die Tabellen und Abfragen der Datenbank zuzugreifen und diese beispielsweise als Datenherkunft eines Formulars oder als Datensatzherkunft von Kombinations- und Listenfeldern anzugeben. Unter VBA konnten Sie leicht mit den Methoden des <b>Database<\/b>-Objekts der DAO-Bibliothek wie <b>OpenRecordset<\/b>, <b>Execute<\/b> et cetera per Code auf die Daten zugreifen.<\/p>\n<p>In einigen Artikeln des vorliegenden Magazins haben wir gezeigt, wie Sie per ADO.NET auf die Daten einer Datenbank zugreifen und wie Sie die dort verwendeten DataSet- und DataTable-Objekte nutzen, um die enthaltenen Daten in Fenstern und ihren Steuerelementen anzuzeigen.<\/p>\n<p>Damit haben wir allerdings immer noch eine recht direkte Bindung zu den Daten der Datenbank hergestellt. Das Ziel moderner Programmiersprachen ist es jedoch, die Daten in Form von Objekten zur Verf&uuml;gung zu stellen, um diese in Benutzeroberfl&auml;chen etwa auf Basis von WPF (Windows Presentation Foundation) anzuzeigen und bearbeiten zu k&ouml;nnen.<\/p>\n<p>Mit der Kenntnis der ADO.NET-Technologie und der Grundlagen der Objektorientierung kann man dann eine Menge Code produzieren, die daf&uuml;r sorgt, dass der Inhalt etwa eines Datensatzes einer Tabelle namens <b>tblKunden<\/b> in ein Objekt auf Basis einer Klasse namens <b>clsKunde <\/b>landet. Diese stellt dann &uuml;ber Eigenschaften wie <b>Vorname<\/b>, <b>Nachname<\/b>, <b>Strasse <\/b>und so weiter alle Informationen zur Verf&uuml;gung, die im entsprechenden Datensatz der Tabelle <b>tblKunden <\/b>gespeichert sind. Die Eigenschaften dieses Objekts k&ouml;nnen Sie nun den Steuerelementen eines Fensters zuweisen, damit der Benutzer diese ansehen und bearbeiten kann. Hat der Benutzer &Auml;nderungen an diesem Datensatz durchgef&uuml;hrt, sollen diese nat&uuml;rlich in die zugrunde liegende Datenbank &uuml;bertragen werden. Dazu m&uuml;ssen Sie den Klassen, auf denen die Objekte basieren, entsprechende Methoden hinzuf&uuml;gen, die sich um das Speichern der &Auml;nderungen in die Tabellen der Datenbank k&uuml;mmern.<\/p>\n<p>Der ben&ouml;tigte Code ist kein Hexenwerk, allerdings wird es schnell recht umfangreich. Je mehr Tabellen die Datenbank enth&auml;lt, desto mehr Klassen sind zu definieren, und da es meist auch noch Beziehungen zwischen den einzelnen Tabellen gibt, sind diese nat&uuml;rlich auch entsprechend abzubilden.<\/p>\n<p>Damit Sie diesen Aufwand nicht stemmen m&uuml;ssen, gibt es objektrelationale Mapper wie beispielsweise das Entity Framework. Damit nimmt Ihnen Microsoft zwei wichtige Aufgaben ab: Erstens erlaubt es, auf Basis einer vorhandenen Datenbank die ben&ouml;tigten Klassen zu erstellen, zweitens stellt es auch noch den Code zur Verf&uuml;gung, mit dem die Daten von den Tabellen in die Objekte und umgekehrt &uuml;bertragen werden.<\/p>\n<h2>Schichtweise<\/h2>\n<p>Im Entity Framework spricht man von verschiedenen Schichten:<\/p>\n<ul>\n<li><b>Konzeptionelle Schicht<\/b>: Diese Schicht entspricht den einzelnen Gesch&auml;ftsobjekten der Anwendung, die in Form etwa von einzelnen Klassen\/Entit&auml;ten und ihren Beziehungen untereinander erscheint. Entit&auml;ten und Beziehungen werden in der sogenannten <b>Conceptual Schema Definition Language <\/b>(<b>CSDL<\/b>) beschrieben.<\/li>\n<li><b>Logische Schicht<\/b>: Die logische Schicht entspricht dem Datenmodell der Datenbank. Allerdings gibt es daf&uuml;r eine eigene Sprache namens <b>Store Schema Definition Language <\/b>(<b>SSDL<\/b>). Die SSDL-Dateien enthalten die Beschreibung der Tabellen, Felder, Schl&uuml;ssel, Abfragen, gespeicherten Prozeduren et cetera, allerdings in einem vom Datenbanksystem unabh&auml;ngigen Format.<\/li>\n<li><b>Zuordnungsschicht<\/b>: Damit fehlt noch das Bindeglied zwischen den beiden, n&auml;mlich die Zuordnungsschicht. Diese wird in der Sprache <b>Mapping Schema Language <\/b>(<b>MSL<\/b>) verfasst. Diese Schicht legt die Zuordnung zwischen der konzeptionellen Schicht und der logischen Schicht fest, und zwar wieder im XML-Format.<\/li>\n<\/ul>\n<h2>Von A nach B und wieder zur&uuml;ck<\/h2>\n<p>Genau genommen bietet das Entity Framework mehrere M&ouml;glichkeiten, um die Daten zu den drei Schichten zu erstellen.<\/p>\n<p>Dabei kommt es darauf an, welche Voraussetzungen vorliegen:<\/p>\n<ul>\n<li><b>Database First<\/b>: Es liegt eine Datenbank vor, auf deren Basis die drei Schichten erzeugt werden sollen. Dann besteht eine weitere Voraussetzung darin, dass es einen entsprechenden Datenprovider gibt. Dies ist beispielsweise f&uuml;r SQL Server-Datenbanken der Fall, f&uuml;r Access-Datenbanken nicht.<\/li>\n<li><b>Model First<\/b>: Hier verwenden Sie den Entity Data Model-Designer von Visual Studio, um die Entit&auml;ten und ihre Beziehungen untereinander zu definieren. Anschlie&szlig;end erzeugen Sie auf dieser Basis die Datenbank beziehungsweise ein entsprechendes Skript.<\/li>\n<li><b>Code First<\/b>: Hier erstellen Sie einfach die Klassen f&uuml;r die einzelnen Entit&auml;ten und legen dort die Eigenschaften und Beziehungen fest. Au&szlig;erdem ben&ouml;tigen Sie eine weitere Klasse, mit der Sie ein paar zus&auml;tzliche Informationen angeben. Auf dieser Basis erzeugt Visual Studio dann die verschiedenen Schichten des Entity Data Models und erstellt sogar noch die Datenbank.<\/li>\n<\/ul>\n<p>F&uuml;r uns ist zun&auml;chst die erste Variante interessant, bei der wir das Entity Data Model auf Basis einer bestehenden Datenbank erstellen. Dazu schauen wir uns auf den folgenden Seiten ein einf&uuml;hrendes Beispiel an.<\/p>\n<h2>Voraussetzungen<\/h2>\n<p>Voraussetzung f&uuml;r die hier verwendete Vorgehensweise ist Visual Studio 2015 mit Update 2. Ohne Update 2 kam es bei unseren Experimenten teilweise zu Abst&uuml;rzen beim Hinzuf&uuml;gen einer Datenquelle auf Basis eines Objekts.<\/p>\n<h2>Erstellen der Anwendung<\/h2>\n<p>F&uuml;r das Beispiel verwenden wir eine Anwendung auf Basis der Vorlage <b>Visual C#|WPF-Anwendung<\/b>, die Sie mit dem Dialog erstellen k&ouml;nnen, der beim Anklicken des Men&uuml;punkts <b>Datei|Neu <\/b>erscheint. Unser Projekt soll <b>EntityBeispiel <\/b>hei&szlig;en.<\/p>\n<h2>Entity Framework-Unterst&uuml;tzung hinzuf&uuml;gen<\/h2>\n<p>Das Entity Framework besteht aus einer Reihe von zus&auml;tzlichen Elementen, die Sie Ihrer Anwendung hinzuf&uuml;gen m&uuml;ssen. Um dies zu erledigen, klicken Sie mit der rechten Maustaste auf den Namen des Projekts im Projektmappen-Explorer und w&auml;hlen dort den Eintrag <b>NuGet-Pakete verwalten&#8230; <\/b>aus. Es erscheint der <b>NuGet-Paket-Manager<\/b>, in dem Sie zun&auml;chst zum Bereich <b>Durchsuchen<\/b> wechseln. Dort sollte gleich als erster Eintrag das <b>EntityFramework<\/b> auftauchen, das Sie ausw&auml;hlen und mit einem Mausklick auf die Schaltfl&auml;che <b>Installieren <\/b>auf der rechten Seite installieren (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_03\/pic_42_001.png\" alt=\"Hinzuf&uuml;gen des Entity Frameworks\" width=\"650\" height=\"420,634\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Hinzuf&uuml;gen des Entity Frameworks<\/span><\/b><\/p>\n<p>Es erscheint ein weiterer Dialog, der den folgenden Vorgang einleitet und mit <b>OK<\/b> best&auml;tigt werden kann (siehe Bild 2). Nachdem Sie auch noch die Lizenzbedingungen best&auml;tigt haben, installiert Visual Studio das Paket im aktuellen Projekt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_03\/pic_42_002.png\" alt=\"Installation des Entity Frameworks\" width=\"425\" height=\"218,6214\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Installation des Entity Frameworks<\/span><\/b><\/p>\n<h2>Datenbank erstellen<\/h2>\n<p>F&uuml;r den Fall, dass Sie aktuell keine SQL Server-Datenbank parat haben, die Sie als Quelle f&uuml;r das Beispiel nutzen k&ouml;nnen, erstellen wir schnell eine &#8211; unabh&auml;ngig davon, ob Sie &uuml;berhaupt SQL Server installiert haben oder nicht.<\/p>\n<p>Visual Studio kommt seit der Version 2012 mit einer kleinen, f&uuml;r Entwickler-Zwecke geeigneten und weitgehend mit dem SQL Server kompatiblen Datenbank-Engine namens <b>LocalDB<\/b>. Um diese zu nutzen, aktivieren Sie mit <b>Ansicht|Server-Explorer <\/b>den Server-Explorer, klicken mit der rechten Maustaste auf den Eintrag <b>Datenverbindungen <\/b>und w&auml;hlen den Kontextmen&uuml;-Eintrag <b>Verbindung hinzuf&uuml;gen&#8230; <\/b>aus (siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_03\/pic_42_003.png\" alt=\"Hinzuf&uuml;gen einer neuen Verbindung\" width=\"425\" height=\"216,9456\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Hinzuf&uuml;gen einer neuen Verbindung<\/span><\/b><\/p>\n<p>Im nun erscheinenden Dialog <b>Verbindung hinzuf&uuml;gen <\/b>(siehe Bild 4) klicken Sie zun&auml;chst auf die Schaltfl&auml;che <b>&Auml;ndern<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_03\/pic_42_004.png\" alt=\"Hinzuf&uuml;gen einer neuen Datenbankverbindung\" width=\"425\" height=\"475,4617\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Hinzuf&uuml;gen einer neuen Datenbankverbindung<\/span><\/b><\/p>\n<p>Der Dialog <b>Datenquelle wechseln <\/b>bietet alle verf&uuml;gbaren Datenquellen an, wobei Sie hier <b>Microsoft SQL Server Datenbankdatei <\/b>selektieren und die Auswahl mit einem Klick auf die Schaltfl&auml;che <b>OK <\/b>best&auml;tigen (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_03\/pic_42_005.png\" alt=\"Auswahl des Datenquellen-Typs\" width=\"500\" height=\"338,2936\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Auswahl des Datenquellen-Typs<\/span><\/b><\/p>\n<p>Damit kehren Sie zur&uuml;ck zum nun etwas anders gestalteten Dialog <b>Verbindung hinzuf&uuml;gen <\/b>(siehe Bild 6). Hier geben Sie nun den Namen der zu erstellenden Datenbankdatei ein, zum Beispiel <b>EntityBeispielDB<\/b>. Klicken Sie dann auf die Schaltfl&auml;che <b>OK<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_03\/pic_42_006.png\" alt=\"Angabe des Namens der neuen Datenbank\" width=\"425\" height=\"460,0114\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Angabe des Namens der neuen Datenbank<\/span><\/b><\/p>\n<p>Es erscheint noch eine R&uuml;ckfrage, ob Sie die noch nicht vorhandene Datenbankdatei anlegen m&ouml;chten. Best&auml;tigen Sie diese mit <b>Ja <\/b>(siehe Bild 7).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_03\/pic_42_007.png\" alt=\"Visual Studio fragt, ob Sie eine neue Datenbankdatei anlegen m&ouml;chten.\" width=\"425\" height=\"172,3215\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Visual Studio fragt, ob Sie eine neue Datenbankdatei anlegen m&ouml;chten.<\/span><\/b><\/p>\n<p>Damit erscheint die neue Datenbank nun im Server-Explorer im Bereich <b>Datenverbindungen<\/b> (siehe Bild 8). Wie Sie sehen, gibt es allerdings noch keine Tabellen. Aber keine Sorge &#8211; das &auml;ndern wir gleich im n&auml;chsten Schritt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_03\/pic_42_008.png\" alt=\"Die neue von localDB verwaltete Datenbank, hier noch ohne Tabellen\" width=\"425\" height=\"373,75\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Die neue von localDB verwaltete Datenbank, hier noch ohne Tabellen<\/span><\/b><\/p>\n<h2>Tabellen zur Datenbank hinzuf&uuml;gen<\/h2>\n<p>Um Tabellen zur Datenbank hinzuzuf&uuml;gen, klicken Sie mit der rechten Maustaste auf den Eintrag <b>Tabellen <\/b>im Server-Explorer. W&auml;hlen Sie hier den Eintrag <b>Neue Abfrage <\/b>aus, um ein Fenster zur Eingabe von SQL-Code zu &ouml;ffnen. Hier tragen Sie zun&auml;chst den Code aus Listing 1 ein.<\/p>\n<pre>CREATE TABLE [dbo].[tblKategorien] (\r\n     [KategorieID] [int] NOT NULL IDENTITY,    \r\n     [Kategoriename] [nvarchar](max),     \r\n     CONSTRAINT [PK_dbo.tblKategorien] PRIMARY KEY ([KategorieID]) \r\n)  \r\nCREATE TABLE [dbo].[tblArtikel] (     \r\n     [ArtikelID] [int] NOT NULL IDENTITY,     \r\n     [Artikelname] [nvarchar](max),     \r\n     [KategorieID] [int] NOT NULL,     \r\n     CONSTRAINT [PK_dbo.tblArtikel] PRIMARY KEY ([ArtikelID]) )  \r\nCREATE INDEX [IX_KategorieID] ON [dbo].[tblArtikel]([KategorieID])  \r\nALTER TABLE [dbo].[tblArtikel] \r\n     ADD CONSTRAINT [FK_dbo.tblArtikel_dbo.tblKategorien_KategorieID] \r\n     FOREIGN KEY ([KategorieID]) \r\n     REFERENCES [dbo].[tblKategorien] ([KategorieID]) ON DELETE CASCADE<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Skript zum Erstellen zweier Tabellen f&uuml;r die Datenbank<\/span><\/b><\/p>\n<p>Danach klicken Sie oben links auf das Men&uuml; mit dem Play-Symbol. W&auml;hlen Sie den Eintrag <b>Ausf&uuml;hren <\/b>aus, werden alle aktuell im Fenster angezeigten SQL-Anweisungen ausgef&uuml;hrt (siehe Bild 9). Alternativ k&ouml;nnen Sie sich auch die Tastenkombination <b>Strg + Umschalt + E <\/b>f&uuml;r diesen Befehl merken. Wer gelegentlich mit dem <b>SQL Server Management Studio <\/b>arbeitet, hat sich vielleicht an die Taste <b>F5 <\/b>f&uuml;r das Starten von SQL-Code gew&ouml;hnt. Diese Taste ist in Visual Studio aber leider schon f&uuml;r das Starten eines Projekts zum Debuggen reserviert.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_03\/pic_42_009.png\" alt=\"Ausf&uuml;hren des eingegebenen SQL-Codes\" width=\"499,4818\" height=\"348,9829\"\/><\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000042\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000042?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000042\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"349bc4cffe\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In vorherigen Beitr&auml;gen haben wir gezeigt, wie Sie Fenster und Steuerelemente wie das DataGrid mit den Daten aus einem ADO.NET-DataSet f&uuml;llen k&ouml;nnen. Wenn Sie echte mehrschichtige Anwendungen bauen m&ouml;chten, gehen Sie einen Schritt weiter und nutzen einen objektrelationalen Mapper, um die Daten aus den Tabellen in Objekten abzulegen, bevor Sie diese als Datenquelle f&uuml;r die Benutzeroberfl&auml;che nutzen. Der Clou eines solchen Mappers ist, dass es sich um ein Framework handelt &#8211; das hei&szlig;t, dass Sie nur einen geringen Teil des notwendigen Codes selbst schreiben m&uuml;ssen. Dieser Artikel gibt eine kleine Einf&uuml;hrung in das Entity Framework.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662016,66032016,44000024,44000008,44000021,44000023],"tags":[],"yst_prominent_words":[66062051,66062047,66062059,66062053,66062061],"class_list":["post-55000042","post","type-post","status-publish","format-standard","hentry","category-662016","category-66032016","category-Berichte_und_Reporting","category-Datenzugriffstechnik","category-Entity_Framework","category-PowerApps"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000042","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000042"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000042\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000042"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000042"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000042"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000042"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}