﻿
{"id":15918,"date":"2020-05-18T20:56:42","date_gmt":"2020-05-18T20:56:42","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=15918"},"modified":"2020-05-18T20:56:42","modified_gmt":"2020-05-18T20:56:42","slug":"asp-net-core-web-api-odata-query-options","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-web-api-odata-query-options\/","title":{"rendered":"Asp.NET Core WEB API &#8211; OData Query Options"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bir \u00f6nceki <a href=\"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-web-api-uygulamasina-odata-implementasyonu\/\" rel=\"noopener noreferrer\" target=\"_blank\">Asp.NET Core Web API Uygulamas\u0131na OData Implementasyonu<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131m\u0131zda bir Asp.NET Core Web API uygulamas\u0131na OData implemantasyonunun nas\u0131l ger\u00e7ekle\u015ftirildi\u011fini incelemi\u015ftik. Bu i\u00e7eri\u011fimizde ise serverdan d\u00f6necek data miktar\u0131n\u0131 kontrol etmemize imkan verecek olan <em>OData Query Options<\/em> yap\u0131lanmas\u0131n\u0131 inceleyece\u011fiz.<\/p>\n<h3>OData Query Options Nedir?<\/h3>\n<p>OData Query Options temel olarak, kullan\u0131c\u0131 taraf\u0131ndan url \u00fczerinden yap\u0131lan veri sorgulamalar\u0131nda(delete hari\u00e7) \u00fcretilen datan\u0131n kullan\u0131c\u0131ya g\u00f6nderilmeden \u00f6nce filtrelenmesini, s\u0131ralanmas\u0131n\u0131 vs. gibi i\u015flemlere tabii tutularak yap\u0131land\u0131r\u0131lmas\u0131n\u0131 sa\u011flayan se\u00e7eneklerdir.<\/p>\n<p>OData Query Options; &#8216;System Query Options&#8217;, &#8216;Custom Query Options&#8217; ve &#8216;Parameter Aliases&#8217; olmak \u00fczere \u00fc\u00e7e ayr\u0131lmaktad\u0131r. Hangi kategoriden olursa olsun se\u00e7enekler a\u015fa\u011f\u0131daki prototipte oldu\u011fu gibi url \u00fczerinde sorguya eklenmektedir.<\/p>\n<div style=\"text-align:center;\">\n<code style=\"color:red;font-size:15px;\"><strong>https:\/\/localhost:5001\/odata\/<span style=\"color:orange;\">{controller_name}?<span style=\"color:blue;\">${options}={value}<\/span><\/span><\/strong><\/code>\n<\/div>\n<p>\u015eimdi s\u0131ras\u0131yla bu se\u00e7enekleri inceleyelim.<\/p>\n<h4>System Query Options<\/h4>\n<p>URL \u00fczerinden yap\u0131lan sorgulama neticesinde d\u00f6nd\u00fcr\u00fclecek olan data \u00fczerinde filtreleme, se\u00e7me, s\u0131ralama gibi i\u015flemler yapan, eleman adedini hesaplama, belirtilen adet kadar\u0131n\u0131 ay\u0131klama yahut g\u00f6rmezden gelme gibi eylemlerde bulunan ve navigation propertyler \u00fczerinden fiziksel ili\u015fkiye sahip olan di\u011fer tablolar\u0131da sorgulayabilmemizi sa\u011flayan se\u00e7eneklerdir.<\/p>\n<ul>\n<li><strong>$filter<\/strong><br \/>\nVerilerin filtrelenmesini sa\u011flar. &#8216;Kar\u015f\u0131la\u015ft\u0131rma&#8217;, &#8216;Mant\u0131ksal&#8217;, &#8216;Aritmatik&#8217; ve &#8216;Fonksiyonel&#8217; operat\u00f6rlerden olu\u015fmaktad\u0131r. Belirtilen ifadelerle yap\u0131lan i\u015flemler neticesinde sonu\u00e7 olarak true d\u00f6nen \u00f6\u011feler sonuca eklenecektir.<\/p>\n<p>Bu se\u00e7ene\u011fi kullanabilmek i\u00e7in endpoint \u00fczerinden a\u015fa\u011f\u0131daki gibi tan\u0131mlanmas\u0131 gerekmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            app.UseEndpoints(endpoints =&gt;\r\n            {\r\n                endpoints.MapODataRoute(&quot;odata&quot;, &quot;odata&quot;, builder.GetEdmModel());\r\n                endpoints.Filter();\r\n            });\r\n<\/pre>\n<p><strong style=\"color:purple;font-size:11px;\">Kar\u015f\u0131la\u015ft\u0131rma Operat\u00f6rleri<\/strong><\/p>\n<ul>\n<li><strong style=\"font-size:11px;\">eq(Equal)<\/strong><br \/>\n\u00dclkesi &#8216;USA&#8217; olanlar\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=ulke eq 'USA'<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">ne(Not Equal)<\/strong><br \/>\n\u00dclkesi &#8216;USA&#8217; olmayanlar\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=ulke ne 'USA'<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">gt(Greater Than)<\/strong><br \/>\nPersonelId de\u011feri 5&#8217;ten b\u00fcy\u00fck olanlar\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=personelid gt 5<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">ge(Greater Equal)<\/strong><br \/>\nPersonelId de\u011feri 5 ve 5&#8217;ten b\u00fcy\u00fck olanlar\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=personelid ge 5<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">lt(Less Than)<\/strong><br \/>\nPersonelId de\u011feri 5&#8217;ten k\u00fc\u00e7\u00fck olanlar\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=personelid lt 5<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">le(Less Equal)<\/strong><br \/>\nPersonelId de\u011feri 5&#8217;ten k\u00fc\u00e7\u00fck ve 5&#8217;e e\u015fit olanlar\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=personelid le 5<\/span><\/code>\n<\/li>\n<\/ul>\n<p><strong style=\"color:purple;font-size:11px;\">Mant\u0131ksal Operat\u00f6rler<\/strong><\/p>\n<ul>\n<li><strong style=\"font-size:11px;\">and<\/strong><br \/>\n\u00dclkesi &#8216;USA&#8217; ve b\u00f6lgesi &#8216;WA&#8217; olan personelleri getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=ulke eq 'USA' and bolge eq 'WA'<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">or<\/strong><br \/>\n\u00dclkesi &#8216;USA&#8217; veya b\u00f6lgesi &#8216;WA&#8217; olan personelleri getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=ulke eq 'USA' or bolge eq 'WA'<\/span><\/code>\n<\/li>\n<\/ul>\n<p><strong style=\"color:purple;font-size:11px;\">Aritmatik Operat\u00f6rler<\/strong><\/p>\n<ul>\n<li><strong style=\"font-size:11px;\">add(Addition)<\/strong><br \/>\nMaa\u015fa 500 eklendi\u011finde 1500&#8217;e e\u015fit olan personelleri getir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=maas add 500 eq 1500<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">sub(Subtraction)<\/strong><br \/>\nMaa\u015f\u0131ndan 500 \u00e7\u0131kar\u0131ld\u0131\u011f\u0131nda 1500&#8217;e e\u015fit olan personelleri getir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=maas sub 500 eq 1500<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">mul(Multiplication)<\/strong><br \/>\nMaa\u015f\u0131 1.5 ile \u00e7arp\u0131ld\u0131\u011f\u0131nda 1500&#8217;e e\u015fit olan personelleri getir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=maas mul 500 eq 1500<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">div(Division)<\/strong><br \/>\nMaa\u015f\u0131 3&#8217;e b\u00f6l\u00fcnd\u00fc\u011f\u00fcnde 1500&#8217;e e\u015fit olan personelleri getir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=maas div 500 eq 1500<\/span><\/code>\n<\/li>\n<\/ul>\n<p><strong style=\"color:purple;font-size:11px;\">Fonksiyonel Operat\u00f6rler<\/strong><\/p>\n<ul>\n<li><strong style=\"font-size:11px;\">endswith<\/strong><br \/>\nAd\u0131 &#8216;y&#8217; ile bitenleri getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=endswith(Adi, 'y')<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">startswith<\/strong><br \/>\nAd\u0131 &#8216;y&#8217; ile ba\u015flayanlar\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=startswith(Adi, 'y')<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">length<\/strong><br \/>\nAd\u0131n\u0131n karakter say\u0131s\u0131 2&#8217;den fazla olanlar\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=length(Adi) gt 2<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">indexof<\/strong><br \/>\nAd\u0131 &#8216;r&#8217; harfi ile ba\u015flayan personelleri getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=indexof(Adi, 'N') eq 0<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">trim<\/strong><br \/>\nBo\u015fluklar\u0131 temizlenmi\u015f ad de\u011feri &#8216;Nancy&#8217;e e\u015fit olanlar\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=trim(Adi) eq 'Nancy'<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">year<\/strong><br \/>\n1992&#8217;de do\u011fanlar\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=year(DogumTarihi) eq 1992<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">month<\/strong><br \/>\n5. ayda do\u011fanlar\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=month(DogumTarihi) eq 5<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">day<\/strong><br \/>\n9. g\u00fcnde do\u011fanlar\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=day(DogumTarihi) eq 9<\/span><\/code>\n<\/li>\n<\/ul>\n<p>Di\u011fer t\u00fcm $filter operat\u00f6rlerini g\u00f6rmek i\u00e7in <a href=\"http:\/\/docs.oasis-open.org\/odata\/odata\/v4.01\/cs01\/part2-url-conventions\/odata-v4.01-cs01-part2-url-conventions.html#sec_SystemQueryOptionfilter\" rel=\"noopener noreferrer\" target=\"_blank\">buradaki<\/a> d\u00f6k\u00fcman\u0131 inceleyebilirsiniz.<\/p>\n<\/li>\n<li><strong>$select<\/strong><br \/>\nBir entityden d\u00f6necek olan propertylerin belirlenmesini sa\u011flar.<\/p>\n<p>Bu se\u00e7ene\u011fi kullanabilmek i\u00e7in endpoint \u00fczerinden a\u015fa\u011f\u0131daki gibi tan\u0131mlanmas\u0131 gerekmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            app.UseEndpoints(endpoints =&gt;\r\n            {\r\n                endpoints.MapODataRoute(&quot;odata&quot;, &quot;odata&quot;, builder.GetEdmModel());\r\n                endpoints.Select();\r\n            });\r\n<\/pre>\n<p>\u00d6rnek olarak a\u015fa\u011f\u0131daki iste\u011fi ve \u00e7\u0131kt\u0131s\u0131n\u0131 inceleyiniz;<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$select=adi, soyadi<\/span><\/code><br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options.jpg\" alt=\"\" width=\"199\" height=\"258\" class=\"alignleft size-full wp-image-15949\" \/><\/a><br \/>\nB\u00f6ylece client ile server aras\u0131nda transfer edilen data boyutu ve miktar\u0131 t\u00f6rp\u00fclenerek performansl\u0131 bir transfer s\u00f6z konusu olacakt\u0131r.<br \/>\n<br \/>&nbsp;<br \/>&nbsp;<br \/>&nbsp;<br \/>&nbsp;<br \/>&nbsp;\n<\/li>\n<li><strong>$orderby<\/strong><br \/>\nData \u00fczerinde s\u0131ralama yap\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Bu se\u00e7ene\u011fi kullanabilmek i\u00e7in endpoint \u00fczerinden a\u015fa\u011f\u0131daki gibi tan\u0131mlanmas\u0131 gerekmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            app.UseEndpoints(endpoints =&gt;\r\n            {\r\n                endpoints.MapODataRoute(&quot;odata&quot;, &quot;odata&quot;, builder.GetEdmModel());\r\n                endpoints.Select().OrderBy();\r\n            });\r\n<\/pre>\n<p>$orderby; k\u00fc\u00e7\u00fckten b\u00fcy\u00fc\u011fe &#8216;asc&#8217; ve b\u00fcy\u00fckten k\u00fc\u00e7\u00fc\u011fe &#8216;desc&#8217; olmak \u00fczere iki t\u00fcrl\u00fc s\u0131ralama ger\u00e7ekle\u015ftirmektedir. Bunun i\u00e7in a\u015fa\u011f\u0131daki \u00f6rnekleri inceleyebilirsiniz;<\/p>\n<ul>\n<li><strong style=\"font-size:11px;\">asc<\/strong><br \/>\nB\u00fcy\u00fckten k\u00fc\u00e7\u00fc\u011fe s\u0131ralar.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$select=adi, soyadi&$orderby=adi asc<\/span><\/code>\n<\/li>\n<li><strong style=\"font-size:11px;\">desc<\/strong><br \/>\nK\u00fc\u00e7\u00fckten b\u00fcy\u00fc\u011fe s\u0131ralar.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$select=adi, soyadi&$orderby=adi desc<\/span><\/code>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>$count<\/strong><br \/>\nGelen data miktar\u0131n\u0131n adedini verir.<\/p>\n<p>Bu se\u00e7ene\u011fi kullanabilmek i\u00e7in endpoint \u00fczerinden a\u015fa\u011f\u0131daki gibi tan\u0131mlanmas\u0131 gerekmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            app.UseEndpoints(endpoints =&gt;\r\n            {\r\n                endpoints.MapODataRoute(&quot;odata&quot;, &quot;odata&quot;, builder.GetEdmModel());\r\n                endpoints.Filter().Count();\r\n            });\r\n<\/pre>\n<p>\u00d6rnek olarak a\u015fa\u011f\u0131daki sorgular\u0131 inceleyiniz;<br \/>\nToplam kay\u0131t miktar\u0131n\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$count=true<\/span><\/code><\/p>\n<p>\u015earta uygun kay\u0131t miktar\u0131n\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$filter=year(IseBaslamaTarihi) eq 1992&$count=true<\/span><\/code>\n<\/li>\n<li><strong>$top<\/strong><br \/>\n\u0130lk n adet veriyi getirir.<\/p>\n<p>Bu se\u00e7ene\u011fi kullanabilmek i\u00e7in endpoint \u00fczerinden a\u015fa\u011f\u0131daki gibi tan\u0131mlanmas\u0131 gerekmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            app.UseEndpoints(endpoints =&gt;\r\n            {\r\n                endpoints.MapODataRoute(&quot;odata&quot;, &quot;odata&quot;, builder.GetEdmModel());\r\n                endpoints.OrderBy().Select().MaxTop(50); \/\/Maximum girilebilecek Top de\u011ferini belirtiyoruz.\r\n            });\r\n<\/pre>\n<p>PersonelId de\u011ferine g\u00f6re b\u00fcy\u00fckten k\u00fc\u00e7\u00fc\u011fe s\u0131ralanm\u0131\u015f listeden ilk 3 verinin ad\u0131n\u0131 ve soyad\u0131n\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$select=adi, soyadi&$top=3&$orderby=personelid desc<\/span><\/code><br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-4.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-4.jpg\" alt=\"Asp.NET Core WEB API - OData Query Options\" width=\"195\" height=\"235\" class=\"aligncenter size-full wp-image-15982\" \/><\/a>\n<\/li>\n<li><strong>$skip<\/strong><br \/>\nn adet veriyi atlar.<\/p>\n<p>Bu se\u00e7ene\u011fi kullanabilmek i\u00e7in endpoint \u00fczerinden herhangi bir metot eklemeye gerek yoktur. \u0130lgili operatif \u00f6zellik dahili olarak gelecektir.<\/p>\n<p>PersonelId de\u011ferine g\u00f6re s\u0131ralanm\u0131\u015f personellerden 3 ve 4. personelleri getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$select=adi, soyadi&$skip=2&$top=2<\/span><\/code><\/p>\n<\/li>\n<li><strong>$expand<\/strong><br \/>\nSorgulama yap\u0131lan entityde bulunan ve fiziksel olarak ili\u015fkiye sahip olan navigation propertylerin sorgulanmas\u0131n\u0131 ve b\u00f6ylece ili\u015fkisel verilerin elde edilmesini sa\u011flar.<\/p>\n<p>Bu se\u00e7ene\u011fi kullanabilmek i\u00e7in endpoint \u00fczerinden a\u015fa\u011f\u0131daki gibi tan\u0131mlanmas\u0131 gerekmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            app.UseEndpoints(endpoints =&gt;\r\n            {\r\n                endpoints.MapODataRoute(&quot;odata&quot;, &quot;odata&quot;, builder.GetEdmModel());\r\n                endpoints.Count().Expand();\r\n            });\r\n<\/pre>\n<p>A\u015fa\u011f\u0131daki \u00f6rnekleri inceleyiniz;<\/p>\n<ul>\n<li>\nPersonel entitysi i\u00e7erisindeki &#8216;Satislar&#8217; propertysi expand edilmekte ve ili\u015fkisel olarak personellerin yapt\u0131\u011f\u0131 t\u00fcm sat\u0131\u015flar getirtilmektedir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$expand=satislar<\/span><\/code><\/p>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-1-176x300.jpg\" alt=\"Asp.NET Core WEB API - OData Query Options\" width=\"176\" height=\"300\" class=\"aligncenter size-medium wp-image-15967\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-1-176x300.jpg 176w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-1.jpg 280w\" sizes=\"auto, (max-width: 176px) 100vw, 176px\" \/><\/a>\n<\/li>\n<li>\nPersonellerin yapt\u0131\u011f\u0131 t\u00fcm sat\u0131\u015flarla birlikte sadece &#8216;SevkAdi&#8217; ve &#8216;MusteriId&#8217;si getirtilmektedir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$select=adi, soyadi&$expand=satislar($select=SevkAdi, MusteriId)<\/span><\/code><\/p>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-2-236x300.jpg\" alt=\"Asp.NET Core WEB API - OData Query Options\" width=\"236\" height=\"300\" class=\"aligncenter size-medium wp-image-15968\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-2-236x300.jpg 236w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-2.jpg 321w\" sizes=\"auto, (max-width: 236px) 100vw, 236px\" \/><\/a>\n<\/li>\n<li>\nPersonellerden ilkinin t\u00fcm sat\u0131\u015flar\u0131 getirtilmektedir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel<strong>(1)<\/strong>?<span style=\"color:blue\";>$select=adi, soyadi&$expand=satislar ($select=SevkAdi, MusteriId)&$count=true<\/span><\/code><br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-3.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-3-300x241.jpg\" alt=\"Asp.NET Core WEB API - OData Query Options\" width=\"300\" height=\"241\" class=\"aligncenter size-medium wp-image-15978\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-3-300x241.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-3.jpg 343w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>\n<\/li>\n<li>\nPersonellerin yapt\u0131\u011f\u0131 sat\u0131\u015flar\u0131n miktar\u0131n\u0131 getirir.<br \/>\n<code style=\"color:red;\">https:\/\/localhost:5001\/odata\/personel?<span style=\"color:blue\";>$select=adi&$expand=satislar($count=true;$select=satisid)<\/span><\/code>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Endpoint Seviyesinde Operat\u00f6r Belirleme<\/h3>\n<p>Yukar\u0131daki operat\u00f6rleri incelerseniz e\u011fer her biri i\u00e7in &#8216;Startup.cs&#8217; dosyas\u0131ndaki &#8216;Configure&#8217; metodunda ayr\u0131 ayr\u0131 tan\u0131mlama yapmam\u0131z gerekti. Halbuki endpoint seviyesinde de hangi operat\u00f6r\u00fclerin kullan\u0131labilece\u011fini a\u015fa\u011f\u0131daki gibi belirtebilmekteyiz.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-5.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-5-300x182.jpg\" alt=\"Asp.NET Core WEB API - OData Query Options\" width=\"300\" height=\"182\" class=\"alignleft size-medium wp-image-15986\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-5-300x182.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/05\/Asp.NET-Core-WEB-API-OData-Query-Options-5.jpg 528w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nG\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere &#8216;EnableQuery&#8217; attribute&#8217;unda &#8216;Allowed&#8230;&#8217; ile ba\u015flayan t\u00fcm propertyler esas\u0131nda bu actionda aktif olacak operat\u00f6rleri belirlememizi sa\u011flamaktad\u0131rlar.<\/p>\n<p>\u00d6rne\u011fin a\u015fa\u011f\u0131daki kod blo\u011funu incelerseniz e\u011fer;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        &#x5B;EnableQuery(AllowedFunctions = AllowedFunctions.All)]\r\n        public IActionResult Get()\r\n        {\r\n            return Ok(_northwindContext.Kategoriler.ToList());\r\n        }\r\n<\/pre>\n<p>&#8216;Get&#8217; fonksiyonunda t\u00fcm fonksiyonel operat\u00f6rlerin \u00e7al\u0131\u015fmas\u0131na endpoint seviyesinde izin verildi\u011fini g\u00f6receksiniz.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bir \u00f6nceki Asp.NET Core Web API Uygulamas\u0131na OData Implementasyonu ba\u015fl\u0131kl\u0131 yaz\u0131m\u0131zda bir Asp.NET Core Web API uygulamas\u0131na OData implemantasyonunun nas\u0131l ger\u00e7ekle\u015ftirildi\u011fini incelemi\u015ftik. Bu i\u00e7eri\u011fimizde ise serverdan d\u00f6necek data miktar\u0131n\u0131 kontrol etmemize imkan verecek&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":15889,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3102,3103,3516],"tags":[3524,3514,3522,3525,3523],"class_list":["post-15918","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asp-net-core","category-asp-net-core-3-1","category-odata","tag-custom-query-options","tag-odata","tag-odata-query-options","tag-parameter-aliases","tag-system-query-options"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=15918"}],"version-history":[{"count":66,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15918\/revisions"}],"predecessor-version":[{"id":15990,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15918\/revisions\/15990"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/15889"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=15918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=15918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=15918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}