{"id":5308,"date":"2024-08-20T13:34:07","date_gmt":"2024-08-20T11:34:07","guid":{"rendered":"https:\/\/viva.racunalniske-novice.com\/objektno-relacijsko-mapiranje-z-entity-framework\/"},"modified":"2024-08-20T13:34:07","modified_gmt":"2024-08-20T11:34:07","slug":"objektno-relacijsko-mapiranje-z-entity-framework","status":"publish","type":"post","link":"https:\/\/viva.racunalniske-novice.com\/fr\/mappage-relationnel-dobjets-avec-un-cadre-dentite\/","title":{"rendered":"Mappage objet-relationnel avec Entity Framework"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><em>Auteurs : Denis Balant, Enej Hudobreznik<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Malgr\u00e9 le d\u00e9veloppement rapide de la technologie, le principal langage de gestion des bases de donn\u00e9es relationnelles reste SQL. langage de requ\u00eate structur\u00e9, qui, avec de nombreux d\u00e9riv\u00e9s personnalis\u00e9s (PostgreSQL, MySQL...), trouve ses racines dans les ann\u00e9es 70 du si\u00e8cle dernier.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#039;\u00e9criture de requ\u00eates SQL s&#039;av\u00e8re souvent un travail assez fastidieux, en particulier avec des structures de bases de donn\u00e9es plus complexes. Au lieu d&#039;\u00e9crire manuellement des requ\u00eates et des conversions vers des objets typiques des langages de programmation orient\u00e9s objet, il est beaucoup plus naturel et souvent plus simple de mapper les classes du code source au sch\u00e9ma de donn\u00e9es et non l&#039;inverse. Cela permet de gagner du temps de d\u00e9veloppement et, en m\u00eame temps, de reconna\u00eetre beaucoup plus facilement les relations entre les entit\u00e9s. Cette m\u00e9thode est appel\u00e9e mappage objet-relationnel (ORM).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour l&#039;environnement .NET, Microsoft propose \u00e0 cet effet le framework open source Entity Framework Core (EF Core en abr\u00e9g\u00e9), qui permet un d\u00e9veloppement orient\u00e9 donn\u00e9es (l&#039;approche Code First), o\u00f9 les donn\u00e9es interconnect\u00e9es sont simplement collect\u00e9es dans des classes qui repr\u00e9sentent des tables, et le framework est bas\u00e9 sur ces bases, il comprend les relations et cr\u00e9e un sch\u00e9ma de base de donn\u00e9es dans son propre format. Le plus grand avantage d\u2019une telle approche est la possibilit\u00e9 d\u2019installer le sch\u00e9ma de donn\u00e9es sur la base de donn\u00e9es souhait\u00e9e sans conna\u00eetre SQL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">EF Core communique avec les bases de donn\u00e9es via des biblioth\u00e8ques de plug-ins appel\u00e9es fournisseurs de bases de donn\u00e9es, ce qui facilite le passage \u00e0 une autre base de donn\u00e9es. Ceux-ci peuvent \u00eatre install\u00e9s par l&#039;utilisateur via le gestionnaire de packages (NuGet pour C#). Les biblioth\u00e8ques officielles ne sont disponibles que pour les solutions Microsoft SQL Server et Azure Cosmos DB et le projet SQLite, et gr\u00e2ce \u00e0 la forte communaut\u00e9 open source, le framework supporte pratiquement toutes les principales bases de donn\u00e9es relationnelles (MySQL, PostgreSQL...).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A titre d&#039;exemple de mod\u00e9lisation de donn\u00e9es, jetons un \u0153il \u00e0 la table \u00ab \u00c9tudiant \u00bb, qui poss\u00e8de les attributs pr\u00e9nom (cha\u00eene de vingt caract\u00e8res maximum), nom (cha\u00eene de vingt caract\u00e8res maximum) et identifiant unique (entier).&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-9.png\" alt=\"\" class=\"wp-image-2538966\"\/><figcaption><sub>Tableau \u00c9tudiant (propre source)<\/sub><\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Dans PostgreSQL, nous d\u00e9finissons cette table comme suit\u00a0:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-10.png\" alt=\"\" class=\"wp-image-2538968\"\/><figcaption><sub>D\u00e9finition de la table des \u00e9tudiants dans PostgreSQL (propre source)<\/sub><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En plus des d\u00e9finitions des types de base pour le pr\u00e9nom et le nom, nous exigeons \u00e9galement qu&#039;ils ne soient jamais vides (NOT NULL). Le type SERIAL repr\u00e9sente un entier unique, qui dans notre cas sert de cl\u00e9 primaire de l&#039;Id. Pour chaque entit\u00e9 ajout\u00e9e, elle est automatiquement d\u00e9termin\u00e9e en fonction de l&#039;ID de l&#039;identit\u00e9 pr\u00e9c\u00e9demment ajout\u00e9e, qui est simplement incr\u00e9ment\u00e9e.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cependant, il est beaucoup plus simple de d\u00e9finir la table en tant que classe dans le code source de la logique de l&#039;application \u00e0 l&#039;aide d&#039;un ORM qui cr\u00e9e lui-m\u00eame l&#039;objet et les exigences de base de donn\u00e9es correspondantes. La balise Key au-dessus de l&#039;attribut class indique la cl\u00e9 primaire et Required indique que l&#039;attribut ne doit pas \u00eatre vide.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s d\u00e9veloppement, le framework EF Core nous permet de g\u00e9n\u00e9rer automatiquement un sch\u00e9ma de donn\u00e9es \u00e0 partir du code et de le d\u00e9ployer dans la base de donn\u00e9es s\u00e9lectionn\u00e9e via les outils de ligne de commande inclus dans le framework. Les modifications progressives du sch\u00e9ma de la base de donn\u00e9es sont g\u00e9r\u00e9es via ces migrations, qui garantissent que la base de donn\u00e9es reste synchronis\u00e9e avec le mod\u00e8le de donn\u00e9es de l&#039;application. Les nouvelles migrations, stock\u00e9es dans EF Core sous la forme de classes sp\u00e9ciales, sont cr\u00e9\u00e9es en comparant le mod\u00e8le de donn\u00e9es actuel avec le sch\u00e9ma de base de donn\u00e9es actuel (\u00e9tat de la derni\u00e8re migration).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-11.png\" alt=\"\" class=\"wp-image-2538970\"\/><figcaption><em>D\u00e9finition de la table des \u00e9tudiants \u00e0 l&#039;aide d&#039;EF Core dans un environnement .NET (propre source)<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La connexion \u00e0 la base de donn\u00e9es est abstraite par une classe qui h\u00e9rite de la classe DbContext. Ses attributs sont des collections d&#039;entit\u00e9s de type DbSet qui correspondent \u00e0 des tables.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-12.png\" alt=\"\" class=\"wp-image-2538972\"\/><figcaption><sub>Classe de connexion \u00e0 la base de donn\u00e9es et table \u00e9tudiant d\u00e9finies (propre source)<\/sub><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Le cadre d&#039;\u00e9criture de requ\u00eates susmentionn\u00e9 utilise la syntaxe LINQ, qui repr\u00e9sente une mani\u00e8re unifi\u00e9e de r\u00e9cup\u00e9rer et de traiter des donn\u00e9es provenant de diff\u00e9rentes sources. La requ\u00eate est ensuite traduite en SQL et le r\u00e9sultat lui-m\u00eame est retraduit en un objet, son attribut ou une table d&#039;objets.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#039;exemple ci-dessous montre une requ\u00eate pour un \u00e9tudiant avec un num\u00e9ro d&#039;inscription connu. Il suffit d&#039;un seul appel \u00e0 la m\u00e9thode Find avec la valeur de la cl\u00e9 primaire (ID).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-13.png\" alt=\"\" class=\"wp-image-2538974\"\/><figcaption><sub>Exemple de requ\u00eate d&#039;\u00e9tudiant avec EF Core (propre source)<\/sub><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Si nous voulons obtenir le m\u00eame r\u00e9sultat sans utiliser d\u2019outil ORM, cela n\u00e9cessite beaucoup plus de code. Un exemple utilisant la biblioth\u00e8que NpgSql est pr\u00e9sent\u00e9. Tout d&#039;abord, nous devons cr\u00e9er des objets qui repr\u00e9sentent la requ\u00eate SQL et lire la base de donn\u00e9es, tout en faisant attention \u00e0 inclure correctement le param\u00e8tre pour \u00e9viter d&#039;\u00e9ventuelles vuln\u00e9rabilit\u00e9s, telles que par ex. Injection SQL. Cette fois, nous devons cr\u00e9er nous-m\u00eames l&#039;objet \u00e9tudiant, mais nous devons faire attention \u00e0 l&#039;ordre des attributs dans la requ\u00eate et \u00e0 la possibilit\u00e9 d&#039;une erreur dans la requ\u00eate.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-14.png\" alt=\"\" class=\"wp-image-2538976\"\/><figcaption><sub>Exemple de requ\u00eate d&#039;\u00e9tudiant utilisant la biblioth\u00e8que NpgSql (propre source)<\/sub><\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/08\/image-15.png\" alt=\"\" class=\"wp-image-2538978\"\/><figcaption><sub>R\u00e9ponse \u00e0 la requ\u00eate ci-dessus (propre source)<\/sub><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Le mappage objet-relationnel nous offre ainsi une couche d&#039;abstraction qui acc\u00e9l\u00e8re consid\u00e9rablement le d\u00e9veloppement logiciel gr\u00e2ce \u00e0 son mappage \u00e0 partir d&#039;un plan de d\u00e9veloppement orient\u00e9 objet, car le code SQL n&#039;a pas besoin d&#039;\u00eatre \u00e9crit s\u00e9par\u00e9ment du code source (souvent orient\u00e9 objet), un ORM bien \u00e9crit prend en charge de bons mod\u00e8les et pratiques de d\u00e9veloppement pour la conception d&#039;applications, tout en permettant aux d\u00e9veloppeurs non SQL d&#039;int\u00e9grer plus facilement une base de donn\u00e9es relationnelle dans leur application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cependant, il est important de souligner que l\u2019ORM n\u2019est pas une solution parfaite. La faiblesse r\u00e9side pr\u00e9cis\u00e9ment dans l\u2019abstraction qu\u2019elle nous propose. Il g\u00e9n\u00e8re beaucoup plus de code SQL qu&#039;un d\u00e9veloppeur n&#039;en \u00e9crirait, ce qui peut grandement affecter la vitesse des applications, masquer de mauvaises pratiques d&#039;acc\u00e8s aux bases de donn\u00e9es et constituer un probl\u00e8me de compatibilit\u00e9 ascendante. Bien que le code g\u00e9n\u00e9r\u00e9 soit correct dans la plupart des cas, il est n\u00e9anmoins recommand\u00e9 de le v\u00e9rifier et de le tester manuellement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le mappage relationnel d&#039;objets est une fonctionnalit\u00e9 qui n&#039;est pas native de l&#039;environnement .NET. La fonctionnalit\u00e9 est fournie par la plupart des frameworks et biblioth\u00e8ques pour diff\u00e9rents langages. Des exemples sont Django pour Python, Gorm pour Go, Spring pour Java, Prisma pour JavaScript (ou Node.js)...<\/p>","protected":false},"excerpt":{"rendered":"<p>Avtorja: Denis Balant, Enej Hudobreznik Kljub hitremu razvoju tehnologije pa je glavni jezik za upravljanje z relacijskimi podatkovnimi bazami \u0161e vedno SQL oz. strukturirani poizvedbeni jezik, ki ima z mnogimi prilagojenimi izpeljankami (PostgreSQL, MySQL \u2026) korenine \u017ee v 70. letih prej\u0161njega stoletja.&nbsp; Pisanje SQL-poizvedb se pogosto izka\u017ee za dokaj zamudno delo, \u0161e posebej pri kompleksnej\u0161i [&hellip;]<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[66],"tags":[],"class_list":["post-5308","post","type-post","status-publish","format-standard","hentry","category-programi"],"acf":{"subtitle":"Danes je svetovni splet najpopularnej\u0161a storitev najve\u010djega ra\u010dunalni\u0161kega omre\u017eja Internet. Vsak dan se mu pridru\u017ei preko 100 000 novih spletnih strani, ki segajo od stati\u010dnih z minimalno podporo interakcije do dinami\u010dnih, ki za izvajanje svojih funkcij potrebujejo veliko koli\u010dino a\u017eurnih podatkov. ","heading":"","summary":"Danes je svetovni splet najpopularnej\u0161a storitev najve\u010djega ra\u010dunalni\u0161kega omre\u017eja Internet. Vsak dan se mu pridru\u017ei preko 100 000 novih spletnih strani, ki segajo od stati\u010dnih z minimalno podporo interakcije do dinami\u010dnih, ki za izvajanje svojih funkcij potrebujejo veliko koli\u010dino a\u017eurnih podatkov.","thumbnail_small":"https:\/\/racunalniske-novice.com\/wp-content\/uploads\/2024\/08\/computer-560x315.jpg","thumbnail_large":"https:\/\/racunalniske-novice.com\/wp-content\/uploads\/2024\/08\/computer-1024x678.jpg","thumbnail_caption":"Fotografija je ilustrativna. (Foto: Pixabay)","gallery":"","video_gallery":null,"author":"","links":null,"sources":null,"skip_language":[]},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Objektno-relacijsko mapiranje z Entity Framework - Ra\u010dunalni\u0161ke novice<\/title>\n<meta name=\"description\" content=\"Danes je svetovni splet najpopularnej\u0161a storitev najve\u010djega ra\u010dunalni\u0161kega omre\u017eja Internet. Vsak dan se mu pridru\u017ei preko 100 000 novih spletnih strani, ki segajo od stati\u010dnih z minimalno podporo int\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/posts\/5308\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Objektno-relacijsko mapiranje z Entity Framework - Ra\u010dunalni\u0161ke novice\" \/>\n<meta property=\"og:description\" content=\"Avtorja: Denis Balant, Enej Hudobreznik Kljub hitremu razvoju tehnologije pa je glavni jezik za upravljanje z relacijskimi podatkovnimi bazami \u0161e vedno SQL oz. strukturirani poizvedbeni jezik, ki ima z mnogimi prilagojenimi izpeljankami (PostgreSQL, MySQL \u2026) korenine \u017ee v 70. letih prej\u0161njega stoletja.&nbsp; Pisanje SQL-poizvedb se pogosto izka\u017ee za dokaj zamudno delo, \u0161e posebej pri kompleksnej\u0161i [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/viva.racunalniske-novice.com\/fr\/mappage-relationnel-dobjets-avec-un-cadre-dentite\/\" \/>\n<meta property=\"og:site_name\" content=\"Ra\u010dunalni\u0161ke novice\" \/>\n<meta property=\"article:published_time\" content=\"2024-08-20T11:34:07+00:00\" \/>\n<meta name=\"author\" content=\"sinusiks\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"sinusiks\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/viva.racunalniske-novice.com\/objektno-relacijsko-mapiranje-z-entity-framework\/\",\"url\":\"https:\/\/viva.racunalniske-novice.com\/objektno-relacijsko-mapiranje-z-entity-framework\/\",\"name\":\"Objektno-relacijsko mapiranje z Entity Framework - Ra\u010dunalni\u0161ke novice\",\"isPartOf\":{\"@id\":\"https:\/\/viva.racunalniske-novice.com\/en\/#website\"},\"datePublished\":\"2024-08-20T11:34:07+00:00\",\"dateModified\":\"2024-08-20T11:34:07+00:00\",\"author\":{\"@id\":\"https:\/\/viva.racunalniske-novice.com\/en\/#\/schema\/person\/afb62e36efa34516d50249517e4cdbb4\"},\"breadcrumb\":{\"@id\":\"https:\/\/viva.racunalniske-novice.com\/objektno-relacijsko-mapiranje-z-entity-framework\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/viva.racunalniske-novice.com\/objektno-relacijsko-mapiranje-z-entity-framework\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/viva.racunalniske-novice.com\/objektno-relacijsko-mapiranje-z-entity-framework\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/viva.racunalniske-novice.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Objektno-relacijsko mapiranje z Entity Framework\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/viva.racunalniske-novice.com\/en\/#website\",\"url\":\"https:\/\/viva.racunalniske-novice.com\/en\/\",\"name\":\"Ra\u010dunalni\u0161ke novice\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/viva.racunalniske-novice.com\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/viva.racunalniske-novice.com\/en\/#\/schema\/person\/afb62e36efa34516d50249517e4cdbb4\",\"name\":\"sinusiks\",\"sameAs\":[\"https:\/\/ml.racunalniske-novice.com\"],\"url\":\"https:\/\/viva.racunalniske-novice.com\/fr\/author\/sinusiks\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Objektno-relacijsko mapiranje z Entity Framework - Ra\u010dunalni\u0161ke novice","description":"Danes je svetovni splet najpopularnej\u0161a storitev najve\u010djega ra\u010dunalni\u0161kega omre\u017eja Internet. Vsak dan se mu pridru\u017ei preko 100 000 novih spletnih strani, ki segajo od stati\u010dnih z minimalno podporo int","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/posts\/5308","og_locale":"fr_FR","og_type":"article","og_title":"Objektno-relacijsko mapiranje z Entity Framework - Ra\u010dunalni\u0161ke novice","og_description":"Avtorja: Denis Balant, Enej Hudobreznik Kljub hitremu razvoju tehnologije pa je glavni jezik za upravljanje z relacijskimi podatkovnimi bazami \u0161e vedno SQL oz. strukturirani poizvedbeni jezik, ki ima z mnogimi prilagojenimi izpeljankami (PostgreSQL, MySQL \u2026) korenine \u017ee v 70. letih prej\u0161njega stoletja.&nbsp; Pisanje SQL-poizvedb se pogosto izka\u017ee za dokaj zamudno delo, \u0161e posebej pri kompleksnej\u0161i [&hellip;]","og_url":"https:\/\/viva.racunalniske-novice.com\/fr\/mappage-relationnel-dobjets-avec-un-cadre-dentite\/","og_site_name":"Ra\u010dunalni\u0161ke novice","article_published_time":"2024-08-20T11:34:07+00:00","author":"sinusiks","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"sinusiks","Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/viva.racunalniske-novice.com\/objektno-relacijsko-mapiranje-z-entity-framework\/","url":"https:\/\/viva.racunalniske-novice.com\/objektno-relacijsko-mapiranje-z-entity-framework\/","name":"Objektno-relacijsko mapiranje z Entity Framework - Ra\u010dunalni\u0161ke novice","isPartOf":{"@id":"https:\/\/viva.racunalniske-novice.com\/en\/#website"},"datePublished":"2024-08-20T11:34:07+00:00","dateModified":"2024-08-20T11:34:07+00:00","author":{"@id":"https:\/\/viva.racunalniske-novice.com\/en\/#\/schema\/person\/afb62e36efa34516d50249517e4cdbb4"},"breadcrumb":{"@id":"https:\/\/viva.racunalniske-novice.com\/objektno-relacijsko-mapiranje-z-entity-framework\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/viva.racunalniske-novice.com\/objektno-relacijsko-mapiranje-z-entity-framework\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/viva.racunalniske-novice.com\/objektno-relacijsko-mapiranje-z-entity-framework\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/viva.racunalniske-novice.com\/en\/"},{"@type":"ListItem","position":2,"name":"Objektno-relacijsko mapiranje z Entity Framework"}]},{"@type":"WebSite","@id":"https:\/\/viva.racunalniske-novice.com\/en\/#website","url":"https:\/\/viva.racunalniske-novice.com\/en\/","name":"Ra\u010dunalni\u0161ke novice","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/viva.racunalniske-novice.com\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/viva.racunalniske-novice.com\/en\/#\/schema\/person\/afb62e36efa34516d50249517e4cdbb4","name":"sinusiks","sameAs":["https:\/\/ml.racunalniske-novice.com"],"url":"https:\/\/viva.racunalniske-novice.com\/fr\/author\/sinusiks\/"}]}},"_links":{"self":[{"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/posts\/5308","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/comments?post=5308"}],"version-history":[{"count":0,"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/posts\/5308\/revisions"}],"wp:attachment":[{"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/media?parent=5308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/categories?post=5308"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/viva.racunalniske-novice.com\/fr\/wp-json\/wp\/v2\/tags?post=5308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}