CINXE.COM
Giorgi Dalakishvili | Personal Website
<!doctype html><html lang=en-us><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta http-equiv=x-ua-compatible content="IE=edge"><meta name=generator content="Source Themes Academic 4.7.0"><meta name=author content="Giorgi Dalakishvili"><meta name=description content="Giorgi Dalakishvili personal blog and portfolio"><link rel=alternate hreflang=en-us href=https://www.giorgi.dev/><meta name=theme-color content="#2962ff"><link rel=stylesheet href=https://cdnjs.cloudflare.com/ajax/libs/academicons/1.8.6/css/academicons.min.css integrity="sha256-uFVgMKfistnJAfoCUQigIl+JfUaP47GrRKjf6CTPVmw=" crossorigin=anonymous><link rel=stylesheet href=https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-1/css/all.min.css integrity="sha256-4w9DunooKSr3MFXHXWyFER38WmPdm361bQS/2KUWZbU=" crossorigin=anonymous><link rel=stylesheet href=https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.css integrity="sha256-Vzbj7sDDS/woiFS3uNKo8eIuni59rjyNGtXfstRzStA=" crossorigin=anonymous><script src=https://cdnjs.cloudflare.com/ajax/libs/lazysizes/5.1.2/lazysizes.min.js integrity="sha256-Md1qLToewPeKjfAHU1zyPwOutccPAm5tahnaw7Osw0A=" crossorigin=anonymous async></script><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Montserrat:400,700%7CRoboto:400,400italic,700%7CRoboto+Mono&display=swap"><link rel=stylesheet href=/css/academic.min.427528b2556e8c5f7cba2c75502048be.css><script async src="https://www.googletagmanager.com/gtag/js?id=UA-155007847-1"></script><script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);} function trackOutboundLink(url,target){gtag('event','click',{'event_category':'outbound','event_label':url,'transport_type':'beacon','event_callback':function(){if(target!=='_blank'){document.location=url;}}});console.debug("Outbound link clicked: "+url);} function onClickCallback(event){if((event.target.tagName!=='A')||(event.target.host===window.location.host)){return;} trackOutboundLink(event.target,event.target.getAttribute('target'));} gtag('js',new Date());gtag('config','UA-155007847-1',{});document.addEventListener('click',onClickCallback,false);</script><link rel=alternate href=/index.xml type=application/rss+xml title="Giorgi Dalakishvili | Personal Website"><link rel=manifest href=/index.webmanifest><link rel=icon type=image/png href=/images/icon_hu8fd87ff8c31df859a12893b2ad204e78_20731_32x32_fill_linear_center_2.png><link rel=apple-touch-icon type=image/png href=/images/icon_hu8fd87ff8c31df859a12893b2ad204e78_20731_192x192_fill_linear_center_2.png><link rel=canonical href=https://www.giorgi.dev/><meta property="twitter:card" content="summary"><meta property="twitter:site" content="@GioDalakishvili"><meta property="twitter:creator" content="@GioDalakishvili"><meta property="og:site_name" content="Giorgi Dalakishvili | Personal Website"><meta property="og:url" content="https://www.giorgi.dev/"><meta property="og:title" content="Giorgi Dalakishvili | Personal Website"><meta property="og:description" content="Giorgi Dalakishvili personal blog and portfolio"><meta property="og:image" content="img/map[gravatar:%!s(bool=false) shape:circle]"><meta property="twitter:image" content="img/map[gravatar:%!s(bool=false) shape:circle]"><meta property="og:locale" content="en-us"><meta property="og:updated_time" content="2024-11-15T15:15:00+00:00"><script type=application/ld+json>{"@context":"https://schema.org","@type":"WebSite","potentialAction":{"@type":"SearchAction","target":"https://www.giorgi.dev?q={search_term_string}","query-input":"required name=search_term_string"},"url":"https://www.giorgi.dev"}</script><link href=//cdn-images.mailchimp.com/embedcode/horizontal-slim-10_7.css rel=stylesheet type=text/css><title>Giorgi Dalakishvili | Personal Website</title></head><body id=top data-spy=scroll data-offset=70 data-target=#navbar-main><aside class=search-results id=search><div class=container><section class=search-header><div class="row no-gutters justify-content-between mb-3"><div class=col-6><h1>Search</h1></div><div class="col-6 col-search-close"><a class=js-search href=#><i class="fas fa-times-circle text-muted" aria-hidden=true></i></a></div></div><div id=search-box><input name=q id=search-query placeholder=Search... autocapitalize=off autocomplete=off autocorrect=off spellcheck=false type=search></div></section><section class=section-search-results><div id=search-hits></div></section></div></aside><nav class="navbar navbar-expand-lg navbar-light compensate-for-scrollbar" id=navbar-main><div class=container><div class="d-none d-lg-inline-flex"><a class=navbar-brand href=/>Giorgi Dalakishvili | Personal Website</a></div><button type=button class=navbar-toggler data-toggle=collapse data-target=#navbar-content aria-controls=navbar aria-expanded=false aria-label="Toggle navigation"> <span><i class="fas fa-bars"></i></span></button><div class="navbar-brand-mobile-wrapper d-inline-flex d-lg-none"><a class=navbar-brand href=/>Giorgi Dalakishvili | Personal Website</a></div><div class="navbar-collapse main-menu-item collapse justify-content-start" id=navbar-content><ul class="navbar-nav d-md-inline-flex"><li class=nav-item><a class=nav-link href=/#about data-target=#about><span>Home</span></a></li><li class=nav-item><a class=nav-link href=/#blog data-target=#blog><span>Blog</span></a></li><li class=nav-item><a class=nav-link href=/#portfolio data-target=#portfolio><span>Portfolio</span></a></li><li class=nav-item><a class=nav-link href=/#talks data-target=#talks><span>Talks</span></a></li><li class=nav-item><a class=nav-link href=/#contact data-target=#contact><span>Contact</span></a></li><li class=nav-item><a class=nav-link href=https://feeds.feedburner.com/AboutMyCode target=_blank rel=noopener><i class="fa fa-rss"></i><span></span></a></li><li class=nav-item><a class=nav-link href=http://eepurl.com/gWau_f target=_blank rel=noopener><i class="fa fa-envelope"></i><span></span></a></li></ul></div><ul class="nav-icons navbar-nav flex-row ml-auto d-flex pl-md-2"><li class=nav-item><a class="nav-link js-search" href=#><i class="fas fa-search" aria-hidden=true></i></a></li><li class=nav-item><a class="nav-link js-dark-toggle" href=#><i class="fas fa-moon" aria-hidden=true></i></a></li></ul></div></nav><span class="js-widget-page d-none"></span><section id=about class="home-section wg-about" style="padding:20px 0"><div class=container><div class=row><div class="col-12 col-lg-4"><div id=profile><img class="avatar avatar-circle" src=/authors/giorgi/avatar_hu10f493a3d3aa140b164f7f78e536211a_178859_270x270_fill_q100_linear_center.jpg alt=Avatar><div class=portrait-title><h2>Giorgi Dalakishvili</h2><h3>World-Class Software Engineer</h3></div><ul class=network-icon aria-hidden=true><li><a href=https://github.com/Giorgi target=_blank rel=noopener><i class="fab fa-github big-icon"></i></a></li><li><a href=https://www.linkedin.com/in/giorgidalakishvili/ target=_blank rel=noopener><i class="fab fa-linkedin big-icon"></i></a></li><li><a href=https://stackoverflow.com/users/239438/giorgi target=_blank rel=noopener><i class="fab fa-stack-overflow big-icon"></i></a></li><li><a href=/#contact><i class="fas fa-envelope big-icon"></i></a></li><li><a href=https://twitter.com/GioDalakishvili target=_blank rel=noopener><i class="fab fa-twitter big-icon"></i></a></li><li><a href=https://feeds.feedburner.com/AboutMyCode target=_blank rel=noopener><i class="fas fa-rss big-icon"></i></a></li></ul></div></div><div class="col-12 col-lg-8"><h1>Biography</h1><p>I am a software developer with more than a decade of experience. I work mainly with C#, ASP.NET Core, REST, GraphQL, MAUI, Xamarin, Entity Framework Core, AWS, Azure, and SQL Server. I have also worked with many other frameworks and systems such as ASP.NET MVC, ASP.NET Web API, WCF, Avalonia, WinForms, Oracle, and many more.</p><p>I have spoken at several conferences such as KCDC, .NET Conf 2023, JetBrains .NET Day Online ’23, and so on.</p><p>I am <a href=https://mvp.microsoft.com/en-US/mvp/profile/e96c7912-ea3e-4fde-b8d3-745d6b07b31b target=_blank rel=noopener>Microsoft MVP</a>, <a href="https://stackoverflow.com/users/239438/giorgi?tab=topactivity" target=_blank rel=noopener>Top 1% on Stack Overflow</a> and a member of <a href=https://www.toptal.com/N5jr6J/worlds-top-talent target=_blank rel=noopener>Top 3% freelance software developers network</a></p><p>Check out my open-sources projects on <a href=https://github.com/Giorgi/ target=_blank rel=noopener>GitHub</a></p><div class=row></div></div></div></div></section><section id=blog class="home-section wg-pages" style="padding:20px 0"><div class=container><div class=row><div class="col-12 col-lg-4 section-heading"><h1>Recent Posts</h1></div><div class="col-12 col-lg-8"><div class=card-simple><div class=article-metadata><div><span><a href=/authors/giorgi/>Giorgi Dalakishvili</a></span></div><span class=article-date>Last updated on Dec 21, 2023</span> <span class=middot-divider></span><span class=article-reading-time>7 min read</span> <span class=middot-divider></span><span class=article-categories><i class="fas fa-folder mr-1"></i><a href=/categories/database/>Database</a></span></div><h3 class="article-title mb-1 mt-3"><a href=/database/postgresql-range-types-entity-framework/>PostgreSQL range types and Entity Framework Core</a></h3><div class=article-style><p>In this blog post I explore PostgreSQL range types and how you can use them from Entity Framework Core.</p></div></div><div class=card-simple><div class=article-metadata><div><span><a href=/authors/giorgi/>Giorgi Dalakishvili</a></span></div><span class=article-date>Aug 15, 2022</span> <span class=middot-divider></span><span class=article-reading-time>3 min read</span> <span class=middot-divider></span><span class=article-categories><i class="fas fa-folder mr-1"></i><a href=/categories/miscellaneous/>Miscellaneous</a></span></div><h3 class="article-title mb-1 mt-3"><a href=/miscellaneous/how-cloudflare-broke-my-build-and-how-i-fixed-it/>How Cloudflare Broke My Build and How I Fixed It</a></h3><div class=article-style><p>About a month ago, my open-source project <a href=https://github.com/Giorgi/EntityFramework.Exceptions>EntityFramework.Exceptions</a> failed to build on AppVeyor, the continuous integration service that I have been using for several years.</p></div></div><div class=card-simple><div class=article-metadata><span class=article-date>Apr 27, 2021</span> <span class=middot-divider></span><span class=article-reading-time>3 min read</span> <span class=middot-divider></span><span class=article-categories><i class="fas fa-folder mr-1"></i><a href=/categories/dotnet/>dotnet</a></span></div><h3 class="article-title mb-1 mt-3"><a href=/dotnet/introducing-graphqlinq-strongly-typed-graphql-queries-with-linq-to-graphql/>Introducing GraphQLinq - Strongly Typed GraphQL Queries with LINQ to GraphQL.</a></h3><div class=article-style><p>Consuming a GraphQL api in C# is straightforward with either using HttpClient directly or using a client library such as GraphQL.Client but both suffer from the same problems: The GraphQL queries do not go through any compile-time checking, and any mistake in the query isn’t discovered until you execute the query at runtime. For example, to query SpaceX GraphQL API for all missions where the manufacturer is Orbital ATK you need to run the following query:</p></div></div><div class=see-all><a href=/blog/>See all posts <i class="fas fa-angle-right"></i></a></div></div></div></div></section><section id=portfolio class="home-section wg-portfolio" style="padding:20px 0"><div class=container><div class=row><div class="col-12 col-lg-4 section-heading"><h1>Portfolio</h1></div><div class="col-12 col-lg-8"><div class="row js-layout-row project-showcase mt-5"><div class="col-lg-12 project-item isotope-item js-id-Entity-Framework-Core js-id-Visual-Studio js-id-Debugging js-id-Query-Plan js-id-Extension"><div class="row align-items-center"><div class="col-12 col-md-6"><h3 class="article-title mb-0 mt-0"><a href=/portfolio/efcore-query-plan-visualizer/>Entity Framework Core Query Plan Visualizer</a></h3><div class=article-style><p>A Visual Studio debugger visualizer that helps you analyze and understand Entity Framework Core query plans directly inside Visual Studio. Get instant insights into how your LINQ queries are translated to SQL and how they perform. Supported Databases: SQL Server, PostgreSQL, SQLite, MySQL and Oracle.</p></div><div class=btn-links><a class=github-button href=https://github.com/Giorgi/EFCore.Visualizer data-icon=octicon-star data-size=large data-show-count=true target=_blank rel=noopener>Star on GitHub</a></div></div><div class="col-12 col-md-6 order-first"><a href=/portfolio/efcore-query-plan-visualizer/><img src=/portfolio/efcore-query-plan-visualizer/featured_hu838663e10df90f3eeccaa126547f0735_131070_540x0_resize_linear_2.png alt></a></div></div></div><div class="col-lg-12 project-item isotope-item js-id-ASP.Net-Core js-id-Aws js-id-SQLite js-id-Slack js-id-Bot"><div class="row align-items-center"><div class="col-12 col-md-6"><h3 class="article-title mb-0 mt-0"><a href=/portfolio/carbot/>CarBot</a></h3><div class=article-style><p>CarBot is a Slack bot to quickly and easily lookup car owner in the slack workplace.</p></div><div class=btn-links></div></div><div class="col-12 col-md-6 order-first"><a href=/portfolio/carbot/><img src=/portfolio/carbot/featured_huc1524281be03a9390ee5e38118573376_153454_540x0_resize_q100_linear.jpg alt></a></div></div></div><div class="col-lg-12 project-item isotope-item js-id-Xamarin.Forms js-id-Xamarin.iOS js-id-Xamarin.Android js-id-Notification-Service-Extension js-id-SQLite"><div class="row align-items-center"><div class="col-12 col-md-6"><h3 class="article-title mb-0 mt-0"><a href=/portfolio/power-tags/>Power Tags Alarm & Reminders</a></h3><div class=article-style><p>Power Tags Alarm & Reminders Mobile Apps are companion apps for Android and Apple for <a href=https://www.powertags.com/ target=_blank rel=noopener>Power Tags</a> website. Automate tasks via your calendar and never set an alarm or reminder!</p></div><div class=btn-links></div></div><div class="col-12 col-md-6 order-first"><a href=/portfolio/power-tags/><img src=/portfolio/power-tags/featured_hu4b656851078d990cc6483cdab17fe8ab_135266_540x0_resize_linear_2.png alt></a></div></div></div><div class="col-lg-12 project-item isotope-item js-id-Xamarin.Forms js-id-Xamarin.iOS js-id-Xamarin.Android js-id-App-Center-Push js-id-SQLite"><div class="row align-items-center"><div class="col-12 col-md-6"><h3 class="article-title mb-0 mt-0"><a href=/portfolio/talk-python-training-mobile-apps/>Talk Python Training Mobile Apps</a></h3><div class=article-style><p>Talk Python Training Mobile Apps are companion apps for Android and Apple for <a href=https://training.talkpython.fm/ target=_blank rel=noopener>Talk Python Training</a> website. Watch Talk Python Training courses on your device, on the go, or even offline!</p></div><div class=btn-links></div></div><div class="col-12 col-md-6 order-first"><a href=/portfolio/talk-python-training-mobile-apps/><img src=/portfolio/talk-python-training-mobile-apps/featured_hu69bcdb61e6c75234ccbd3c459a60f610_147488_540x0_resize_linear_2.png alt></a></div></div></div><div class="col-lg-12 project-item isotope-item js-id-Xamarin.Mac js-id-SQLite js-id-PayPal-Instant-Payment-Notification js-id-WinForms"><div class="row align-items-center"><div class="col-12 col-md-6"><h3 class="article-title mb-0 mt-0"><a href=/portfolio/scrubbly/>Scrubbly</a></h3><div class=article-style><p>The fastest & easiest desktop list scrubbing application.</p></div><div class=btn-links></div></div><div class="col-12 col-md-6 order-first"><a href=/portfolio/scrubbly/><img src=/portfolio/scrubbly/featured_hu5b538ed1afc0a108a03bdb8496c3afd9_36340_540x0_resize_linear_2.png alt></a></div></div></div><div class="col-lg-12 project-item isotope-item js-id-Xamarin.Android js-id-RestSharp"><div class="row align-items-center"><div class="col-12 col-md-6"><h3 class="article-title mb-0 mt-0"><a href=/portfolio/trivia-buff/>Trivia Buff</a></h3><div class=article-style><p>Did you know that the color orange was named after the fruit? This and many other trivia facts are added daily. All facts are verified and have a corresponding article. Share the amazing facts with your friends or save for later.</p></div><div class=btn-links></div></div><div class="col-12 col-md-6 order-first"><a href=/portfolio/trivia-buff/><img src=/portfolio/trivia-buff/featured_hu1bd076cbe35ea457f5e253af41061cc1_175859_540x0_resize_linear_2.png alt></a></div></div></div><div class="col-lg-12 project-item isotope-item"><div class="row align-items-center"><div class="col-12 col-md-6"><h3 class="article-title mb-0 mt-0"><a href=/portfolio/australia-on-disc-business-edition/>Australia on Disc Business Edition</a></h3><div class=article-style><p>Australia on Disc is an Australia-wide information database providing access to the names, addresses and phone numbers (and much more) of over 1 million+ Australian businesses</p></div><div class=btn-links></div></div><div class="col-12 col-md-6 order-first"><a href=/portfolio/australia-on-disc-business-edition/><img src=/portfolio/australia-on-disc-business-edition/featured_huc18f613c1eef60aaa4e3928aeabee812_51318_540x0_resize_linear_2.png alt></a></div></div></div><div class="col-lg-12 project-item isotope-item js-id-ASP.Net-Core js-id-Swashbuckle js-id-Swagger js-id-IdentityServer4 js-id-Oracle"><div class="row align-items-center"><div class="col-12 col-md-6"><h3 class="article-title mb-0 mt-0"><a href=/portfolio/business-online-api/>Business Online Api</a></h3><div class=article-style><p>Business Online API is a collection of several REST services for interacting with internet banking platform of Bank of Georgia for corporate customers.</p><p>Service calls are done over HTTP protocol. Information can be exchanged in json and xml formats.</p></div><div class=btn-links></div></div><div class="col-12 col-md-6 order-first"><a href=/portfolio/business-online-api/><img src=/portfolio/business-online-api/featured_huc1ae8b78cc120c44c047ced214a76bd4_39164_540x0_resize_linear_2.png alt></a></div></div></div><div class="col-lg-12 project-item isotope-item js-id-dotnet-core js-id-Entity-Framework-Core js-id-SQL-Server js-id-PostgreSQL js-id-MySQL js-id-Oracle js-id-SQLite"><div class="row align-items-center"><div class="col-12 col-md-6"><h3 class="article-title mb-0 mt-0"><a href=/portfolio/entityframework-exceptions/>Entity Framework Exceptions</a></h3><div class=article-style><p>Handle database errors easily when working with Entity Framework Core. Supports SQLServer, PostgreSQL, Oracle, SQLite and MySql</p></div><div class=btn-links><a class=github-button href=https://github.com/Giorgi/EntityFramework.Exceptions data-icon=octicon-star data-size=large data-show-count=true target=_blank rel=noopener>Star on GitHub</a></div></div><div class="col-12 col-md-6 order-first"><a href=/portfolio/entityframework-exceptions/><img src=/portfolio/entityframework-exceptions/featured_huc5797be314d91018027257df8237c8d3_5398_540x0_resize_linear_2.png alt></a></div></div></div><div class="col-lg-12 project-item isotope-item js-id-Xamarin js-id-MvvmCross js-id-SQLite js-id-ASP.Net-Web-Api js-id-Azure"><div class="row align-items-center"><div class="col-12 col-md-6"><h3 class="article-title mb-0 mt-0"><a href=/portfolio/idencia/>Idencia</a></h3><div class=article-style><p>Idencia is a powerful, yet simple to use, Quality Control data collection system for the Manufacturing Industry that works in the Cloud.</p></div><div class=btn-links></div></div><div class="col-12 col-md-6 order-first"><a href=/portfolio/idencia/><img src=/portfolio/idencia/featured_hua5fc0a127b18055584c5b209e9aa9e4e_211812_540x0_resize_linear_2.png alt></a></div></div></div><div class="col-lg-12 project-item isotope-item"><div class="row align-items-center"><div class="col-12 col-md-6"><h3 class="article-title mb-0 mt-0"><a href=/portfolio/linqpad-queryplanvisualizer/>LINQPad Query Plan Visualizer</a></h3><div class=article-style><p>An SQL Server and PostgreSQL query execution plan visualizer for LINQPad.</p><p>LINQPad allows users to execute LINQ queries, but it has no way to display the query execution plan so I started an open-source plugin for LINQPad which shows the query execution plan.</p></div><div class=btn-links><a class=github-button href=https://github.com/Giorgi/LINQPad.QueryPlanVisualizer data-icon=octicon-star data-size=large data-show-count=true target=_blank rel=noopener>Star on GitHub</a></div></div><div class="col-12 col-md-6 order-first"><a href=/portfolio/linqpad-queryplanvisualizer/><img src=/portfolio/linqpad-queryplanvisualizer/featured_hu83a78479407fa3cfb9ade159a2db3321_41543_540x0_resize_linear_2.png alt></a></div></div></div></div></div></div></div></section><section id=talks class="home-section wg-pages"><div class=container><div class=row><div class="col-12 col-lg-4 section-heading"><h1>Recent & Upcoming Talks</h1></div><div class="col-12 col-lg-8"><div class="media stream-item"><div class=media-body><h3 class="article-title mb-0 mt-0"><a href=/talk/update-conference-prague/>Update Conference Prague 2024 - Supercharged Search with Semantic Search and Vector Embeddings</a></h3><div class=article-style>Semantic search or search based on the meaning analyzes the context and intent behind the query term to provide relevant results. Using …</div><div class="stream-meta article-metadata"><div><span>Nov 15, 2024 3:15 PM — 4:15 PM</span></div><div><span><a href=/authors/giorgi/>Giorgi Dalakishvili</a></span></div></div><div class=btn-links><a class=github-button href=https://github.com/Giorgi/Semantic-Search-Demo/ data-icon=octicon-star data-size=large data-show-count=true target=_blank rel=noopener>Star on GitHub</a></div></div><div class=ml-3></div></div><div class="media stream-item"><div class=media-body><h3 class="article-title mb-0 mt-0"><a href=/talk/basta-mainz-2024/>Basta Mainz 2024 - Beyond Relational with Entity Framework</a></h3><div class=article-style>Entity Framework Core is great for performing crud operations, but did you know that you can go beyond basic relational queries with …</div><div class="stream-meta article-metadata"><div><span>Sep 17, 2024 4:10 PM — 5:00 PM</span></div><div><span><a href=/authors/giorgi/>Giorgi Dalakishvili</a></span></div></div><div class=btn-links></div></div><div class=ml-3></div></div><div class="media stream-item"><div class=media-body><h3 class="article-title mb-0 mt-0"><a href=/talk/developer-week-24/>Developer Week '24 - Supercharged Search with Semantic Search and Vector Embeddings</a></h3><div class=article-style>Semantic search or search based on the meaning analyzes the context and intent behind the query term to provide relevant results. Using …</div><div class="stream-meta article-metadata"><div><span>Jul 2, 2024 5:00 PM — 6:00 PM</span></div><div><span><a href=/authors/giorgi/>Giorgi Dalakishvili</a></span></div></div><div class=btn-links><a class=github-button href=https://github.com/Giorgi/Semantic-Search-Demo/ data-icon=octicon-star data-size=large data-show-count=true target=_blank rel=noopener>Star on GitHub</a></div></div><div class=ml-3></div></div><div class="media stream-item"><div class=media-body><h3 class="article-title mb-0 mt-0"><a href=/talk/dotnetrocks/>.NET Rocks - Visually Debugging EF Queries with Giorgi Dalakishvili</a></h3><div class=article-style>How do you debug your EF queries? Carl and Richard talk to Giorgi Dalakishvili about his open-source Visual Studio extension, EFCore …</div><div class="stream-meta article-metadata"><div><span>Apr 25, 2024 12:00 AM</span></div><div><span><a href=/authors/giorgi/>Giorgi Dalakishvili</a></span></div></div><div class=btn-links><a class=github-button href=https://github.com/Giorgi/EFCore.Visualizer data-icon=octicon-star data-size=large data-show-count=true target=_blank rel=noopener>Star on GitHub</a> <a class="btn btn-outline-primary my-1 mr-1 btn-sm btn-video" href=https://www.dotnetrocks.com/details/1895 target=_blank rel=noopener>Video</a></div></div><div class=ml-3></div></div><div class="media stream-item"><div class=media-body><h3 class="article-title mb-0 mt-0"><a href=/talk/dot-net-conf-2023/>.NET Conf 2023 - Spatial Data with Entity Framework Core and .NET MAUI</a></h3><div class=article-style>Entity Framework Core is great for performing crud operations, but did you know that you can go beyond basic relational queries with …</div><div class="stream-meta article-metadata"><div><span>Nov 15, 2023 9:00 PM — 9:30 PM</span></div><div><span><a href=/authors/giorgi/>Giorgi Dalakishvili</a></span></div></div><div class=btn-links><a class=github-button href=https://github.com/Giorgi/Maui-DotNetConf-Sample data-icon=octicon-star data-size=large data-show-count=true target=_blank rel=noopener>Star on GitHub</a> <a class="btn btn-outline-primary my-1 mr-1 btn-sm btn-video" href="https://www.youtube.com/watch?v=lBFlNjRbMsk&list=PLdo4fOcmZ0oULyHSPBx-tQzePOYlhvrAU&index=38" target=_blank rel=noopener>Video</a></div></div><div class=ml-3></div></div><div class=see-all><a href=/talk/>See all talks <i class="fas fa-angle-right"></i></a></div></div></div></div></section><section id=tags class="home-section wg-tag-cloud" style="padding:20px 0"><div class=container><div class=row><div class="col-12 col-lg-4 section-heading"><h1>Popular Topics</h1></div><div class="col-12 col-lg-8"><div class=tag-cloud><a href=/tags/access-denied/ style=font-size:.7rem>access denied</a> <a href=/tags/csharp/ style=font-size:1.706168841117857rem>csharp</a> <a href=/tags/dotnet/ style=font-size:1.6403008339583356rem>dotnet</a> <a href=/tags/dynamic/ style=font-size:.9534837503125009rem>dynamic</a> <a href=/tags/entity-framework-core/ style=font-size:1.9596525914303582rem>Entity Framework Core</a> <a href=/tags/expression-trees/ style=font-size:1.1333333333333333rem>expression trees</a> <a href=/tags/json/ style=font-size:1.2728355077845237rem>Json</a> <a href=/tags/linq/ style=font-size:1.2728355077845237rem>linq</a> <a href=/tags/linqpad/ style=font-size:.9534837503125009rem>linqpad</a> <a href=/tags/mysql/ style=font-size:.9534837503125009rem>MySQL</a> <a href=/tags/oracle/ style=font-size:.9534837503125009rem>Oracle</a> <a href=/tags/postgresql/ style=font-size:1.706168841117857rem>PostgreSQL</a> <a href=/tags/query-plan/ style=font-size:1.2728355077845237rem>Query Plan</a> <a href=/tags/shunting-yard/ style=font-size:1.1333333333333333rem>shunting yard</a> <a href=/tags/spatial-data/ style=font-size:.9534837503125009rem>spatial data</a> <a href=/tags/sql-server/ style=font-size:1.8201504169791678rem>SQL Server</a> <a href=/tags/sqlhierarchyid/ style=font-size:.9534837503125009rem>SqlHierarchyId</a> <a href=/tags/sqlite/ style=font-size:1.3868170836458344rem>SQLite</a> <a href=/tags/temporal-tables/ style=font-size:.9534837503125009rem>temporal tables</a> <a href=/tags/xamarin.android/ style=font-size:.9534837503125009rem>Xamarin.Android</a></div></div></div></div></section><section id=contact class="home-section wg-contact" style="padding:20px 0"><div class=container><div class="row contact-widget"><div class="col-12 col-lg-4 section-heading"><h1>Contact</h1></div><div class="col-12 col-lg-8"><div class=mb-3><form name=contact method=post action=https://formspree.io/giorgi@giorgi.dev><div class="form-group form-inline"><label class=sr-only for=inputName>Name</label> <input type=text name=name class="form-control w-100" id=inputName placeholder=Name required></div><div class="form-group form-inline"><label class=sr-only for=inputEmail>Email</label> <input type=email name=email class="form-control w-100" id=inputEmail placeholder=Email required></div><div class=form-group><label class=sr-only for=inputMessage>Message</label> <textarea name=message class=form-control id=inputMessage rows=5 placeholder=Message required></textarea></div><button type=submit class="btn btn-outline-primary px-3 py-2">Send</button></form></div><ul class=fa-ul></ul></div></div></div></section><script src=https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin=anonymous></script><script src=https://cdnjs.cloudflare.com/ajax/libs/jquery.imagesloaded/4.1.4/imagesloaded.pkgd.min.js integrity="sha256-lqvxZrPLtfffUl2G/e7szqSvPBILGbwmsGE1MKlOi0Q=" crossorigin=anonymous></script><script src=https://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/3.0.6/isotope.pkgd.min.js integrity="sha256-CBrpuqrMhXwcLLUd5tvQ4euBHCdh7wGlDfNz8vbu/iI=" crossorigin=anonymous></script><script src=https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.js integrity="sha256-yt2kYMy0w8AbtF89WXb2P1rfjcP/HTHLT7097U8Y5b8=" crossorigin=anonymous></script><script>const code_highlighting=false;</script><script>const isSiteThemeDark=false;</script><script>const search_config={"indexURI":"/index.json","minLength":1,"threshold":0.3};const i18n={"no_results":"No results found","placeholder":"Search...","results":"results found"};const content_type={'post':"Posts",'project':"Projects",'publication':"Publications",'talk':"Talks"};</script><script id=search-hit-fuse-template type=text/x-template> <div class="search-hit" id="summary-{{key}}"> <div class="search-hit-content"> <div class="search-hit-name"> <a href="{{relpermalink}}">{{title}}</a> <div class="article-metadata search-hit-type">{{type}}</div> <p class="search-hit-description">{{snippet}}</p> </div> </div> </div> </script><script src=https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js integrity="sha256-VzgmKYmhsGNNN4Ph1kMW+BjoYJM2jV5i4IlFoeZA9XI=" crossorigin=anonymous></script><script src=https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/jquery.mark.min.js integrity="sha256-4HLtjeVgH0eIB3aZ9mLYF6E8oU5chNdjU6p6rrXpl9U=" crossorigin=anonymous></script><script src=/js/academic.min.a8d7005002cb4a052fd6d721e83df9ba.js></script><script async defer src=https://buttons.github.io/buttons.js></script><div class=container><footer class=site-footer><p class=powered-by>© Giorgi Dalakishvili 2019 - 2025 · Powered by the <a href=https://sourcethemes.com/academic/ target=_blank rel=noopener>Academic theme</a> for <a href=https://gohugo.io target=_blank rel=noopener>Hugo</a>. <span class=float-right aria-hidden=true><a href=# class=back-to-top><span class=button_icon><i class="fas fa-chevron-up fa-2x"></i></span></a></span></p></footer></div><div id=modal class="modal fade" role=dialog><div class=modal-dialog><div class=modal-content><div class=modal-header><h5 class=modal-title>Cite</h5><button type=button class=close data-dismiss=modal aria-label=Close> <span aria-hidden=true>×</span></button></div><div class=modal-body><pre><code class="tex hljs"></code></pre></div><div class=modal-footer><a class="btn btn-outline-primary my-1 js-copy-cite" href=# target=_blank><i class="fas fa-copy"></i>Copy</a> <a class="btn btn-outline-primary my-1 js-download-cite" href=# target=_blank><i class="fas fa-download"></i>Download</a><div id=modal-error></div></div></div></div></div></body></html>