{"id":772,"date":"2022-10-29T14:43:48","date_gmt":"2022-10-29T14:43:48","guid":{"rendered":"https:\/\/okankaradag.com\/?p=772"},"modified":"2022-10-29T14:46:03","modified_gmt":"2022-10-29T14:46:03","slug":"entityframework-core-global-filter-kullanimi","status":"publish","type":"post","link":"https:\/\/okankaradag.com\/en\/entityframework-core\/entityframework-core-global-filter-kullanimi","title":{"rendered":"How to use Global Filter at EntityFramework Core ?"},"content":{"rendered":"<p>Global filter, ef ile linq sorgular\u0131 yazarken yazd\u0131\u011f\u0131m\u0131z filtreyi otomatik ekleyen bir \u00f6zelliktir. Genelllik softdelete gibi durumlarda kullan\u0131lsa da bir\u00e7ok ihtiyaca cevap veriyor.<\/p>\n\n\n\n<p>A\u015fa\u011f\u0131daki entity \u00fczerinden \u00f6rnek kullan\u0131mlar\u0131n\u0131 inceleyece\u011fiz.<\/p>\n\n\n\n<p><strong>Product.cs<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c# decode:true\">public class Product: ISoftDelete,ISortableEntity\n{\n    public int Id { get; set; }\n    public string Name { get; set; } = \"\";\n    public int CategoryId { get; set; }\n    public bool MyProperty { get; set; }\n    public bool IsDeleted { get ; set; }\n    public int? Order { get; set ; }\n\n    public virtual Category Category { get; set; }\n}<\/pre><\/div>\n\n\n\n<p><strong>IsDeleted <\/strong>ve <strong>Order <\/strong>alanlar\u0131 <strong>ISoftDelete <\/strong>ve <strong>ISortableEntity <\/strong>interfacelerinden t\u00fcr\u00fcyor.<\/p>\n\n\n\n<h5 id=\"temel-kullanimi\">Temel Kullan\u0131m\u0131<\/h5>\n\n\n\n<p>Product i\u00e7in GlobalFilter Kullan\u0131m\u0131n\u0131 <code>HasQueryFilters <\/code>arac\u0131l\u0131\u011f\u0131yla yap\u0131yoruz.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true\">modelBuilder.Entity&lt;Product&gt;().HasQueryFilter(p =&gt; !p.IsDeleted);<\/pre><\/div>\n\n\n\n<p>A\u015fa\u011f\u0131daki sorguyu \u00e7al\u0131\u015ft\u0131ral\u0131m ve generate edilen sorguya bakal\u0131m.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true\">var result = dbContext.Products.AsEnumerable();<\/pre><\/div>\n\n\n\n<p>Result:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:tsql decode:true\">SELECT [p].[Id], [p].[CategoryId], [p].[ExpireDate], [p].[IsDeleted], [p].[Name], [p].[Order], [p].[Price]\nFROM [Products] AS [p]\nWHERE [p].[IsDeleted] = CAST(0 AS bit)<\/pre><\/div>\n\n\n\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi bir ko\u015ful eklememize ra\u011fmen global olarak ekledi\u011fimiz <code>IsDeleted <\/code>filter eklenmi\u015f oldu.<\/p>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">\u00d6nemli Not<\/mark><\/strong>:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>Ayn\u0131 Entity i\u00e7in birden \u00e7ok query filter olu\u015fturamazs\u0131n\u0131z fakat query i\u00e7inde and ve or operat\u00f6rleriyle birden \u00e7ok olu\u015fturabilirsiniz. <\/p><\/blockquote>\n\n\n\n<h5 id=\"navigation-propertyler-iliskili-alanlar\">Navigation Propertyler (\u0130li\u015fkili Alanlar)<\/h5>\n\n\n\n<p>\u0130li\u015fkili alanlar i\u00e7in de ekleme yapabilirsiniz.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c# decode:true\">modelBuilder.Entity&lt;Product&gt;().HasQueryFilter(p =&gt; p.Category.Name == \"Console\");<\/pre><\/div>\n\n\n\n<p>Sorgu:<\/p>\n\n\n\n<p><code>var result = dbContext.Products.AsEnumerable();<\/code><\/p>\n\n\n\n<p>Sonu\u00e7 (As Sql)<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true\">SELECT [p].[Id], [p].[CategoryId], [p].[ExpireDate], [p].[IsDeleted], [p].[Name], [p].[Order], [p].[Price]\n      FROM [Products] AS [p]\n      INNER JOIN [Categories] AS [c] ON [p].[CategoryId] = [c].[Id]\n      WHERE [c].[Name] = N'Console'<\/pre><\/div>\n\n\n\n<p>Burada dikkat etmemiz gerek \u015fey, <strong>Include <\/strong>yapmam\u0131za ra\u011fmen query filter\u0131n bunu uygulamas\u0131.<\/p>\n\n\n\n<h5 id=\"disable\">Disable<\/h5>\n\n\n\n<p>Baz\u0131 sorgularda global filter iptal etme ihtiyac\u0131 olabilir bu durumlar i\u00e7in IgnoreQueryFilters operat\u00f6r\u00fcn\u00fc kullanabiliriz.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c# decode:true\">var result = dbContext.Products.IgnoreQueryFilters().AsEnumerable();<\/pre><\/div>\n\n\n\n<p>Sonu\u00e7:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:tsql decode:true\">SELECT [p].[Id], [p].[CategoryId], [p].[ExpireDate], [p].[IsDeleted], [p].[Name], [p].[Order], [p].[Price]\n      FROM [Products] AS [p]<\/pre><\/div>\n\n\n\n<h5 id=\"ortak-kullanilan-alanlar-icin-genel-bir-query-olusturma\">Ortak Kullan\u0131lan Alanlar \u0130\u00e7in Genel Bir Query Olu\u015fturma<\/h5>\n\n\n\n<p>Yukar\u0131daki \u00f6rnekte softdelete alanlar i\u00e7in hepsine tek tek yazmam\u0131z gerekiyor, bundan kurtarmak i\u00e7in a\u015fa\u011f\u0131daki \u00e7\u00f6z\u00fcm\u00fc kullanabiliriz.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:default decode:true\">Expression&lt;Func&lt;ISoftDelete, bool&gt;&gt; filterExpr = x =&gt; !x.IsDeleted;\nforeach (var mutableEntityType in modelBuilder.Model.GetEntityTypes())\n{\n    var parameter = Expression.Parameter(mutableEntityType.ClrType);\n    var body = ReplacingExpressionVisitor.Replace(filterExpr.Parameters.First(), parameter, filterExpr.Body);\n    var lambdaExpression = Expression.Lambda(body, parameter);\n    mutableEntityType.SetQueryFilter(lambdaExpression);\n}<\/pre><\/div>\n\n\n\n<p>Okudu\u011funuz i\u00e7in te\u015fekk\u00fcrler, ba\u015fka bir g\u00f6nderide g\u00f6r\u00fc\u015fmek \u00fczere \ud83d\ude42<\/p>","protected":false},"excerpt":{"rendered":"<p>In this article we going to look global filter that is entityframework feature.<\/p>","protected":false},"author":1,"featured_media":784,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[91,17,42],"tags":[56,105,107,106],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>EntityFramework Core Global Filter Kullan\u0131m\u0131 - Okan Karada\u011f<\/title>\n<meta name=\"description\" content=\"EntityFramewok Core 6.0&#039;da global filter nas\u0131l kullan\u0131l\u0131r? Onu bu g\u00f6nderide inceleyece\u011fiz ve \u00f6rnekler yapaca\u011f\u0131z.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/okankaradag.com\/en\/entityframework-core\/entityframework-core-global-filter-kullanimi\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"EntityFramework Core Global Filter Kullan\u0131m\u0131 - Okan Karada\u011f\" \/>\n<meta property=\"og:description\" content=\"EntityFramewok Core 6.0&#039;da global filter nas\u0131l kullan\u0131l\u0131r? Onu bu g\u00f6nderide inceleyece\u011fiz ve \u00f6rnekler yapaca\u011f\u0131z.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/okankaradag.com\/en\/entityframework-core\/entityframework-core-global-filter-kullanimi\/\" \/>\n<meta property=\"og:site_name\" content=\"Okan Karada\u011f\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-29T14:43:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-10-29T14:46:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/okankaradag.com\/wp-content\/uploads\/2022\/10\/earth2-scaled-e1667054751726.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1100\" \/>\n\t<meta property=\"og:image:height\" content=\"688\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Okan Karada\u011f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Okan Karada\u011f\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi#article\",\"isPartOf\":{\"@id\":\"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi\"},\"author\":{\"name\":\"Okan Karada\u011f\",\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\"},\"headline\":\"EntityFramework Core Global Filter Kullan\u0131m\u0131\",\"datePublished\":\"2022-10-29T14:43:48+00:00\",\"dateModified\":\"2022-10-29T14:46:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi\"},\"wordCount\":232,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\"},\"keywords\":[\"asp.net core\",\"ef core\",\"filter\",\"query\"],\"articleSection\":[\".Net\",\"C#\",\"EntityFramework Core\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi\",\"url\":\"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi\",\"name\":\"EntityFramework Core Global Filter Kullan\u0131m\u0131 - Okan Karada\u011f\",\"isPartOf\":{\"@id\":\"https:\/\/okankaradag.com\/#website\"},\"datePublished\":\"2022-10-29T14:43:48+00:00\",\"dateModified\":\"2022-10-29T14:46:03+00:00\",\"description\":\"EntityFramewok Core 6.0'da global filter nas\u0131l kullan\u0131l\u0131r? Onu bu g\u00f6nderide inceleyece\u011fiz ve \u00f6rnekler yapaca\u011f\u0131z.\",\"breadcrumb\":{\"@id\":\"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/okankaradag.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"EntityFramework Core Global Filter Kullan\u0131m\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/okankaradag.com\/#website\",\"url\":\"https:\/\/okankaradag.com\/\",\"name\":\"Okan Karada\u011f\",\"description\":\"Programlama \u00dczerine\",\"publisher\":{\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/okankaradag.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52\",\"name\":\"Okan Karada\u011f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g\",\"caption\":\"Okan Karada\u011f\"},\"logo\":{\"@id\":\"https:\/\/okankaradag.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/okankaradag.com\"],\"url\":\"https:\/\/okankaradag.com\/en\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"EntityFramework Core Global Filter Kullan\u0131m\u0131 - Okan Karada\u011f","description":"EntityFramewok Core 6.0'da global filter nas\u0131l kullan\u0131l\u0131r? Onu bu g\u00f6nderide inceleyece\u011fiz ve \u00f6rnekler yapaca\u011f\u0131z.","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:\/\/okankaradag.com\/en\/entityframework-core\/entityframework-core-global-filter-kullanimi\/","og_locale":"en_US","og_type":"article","og_title":"EntityFramework Core Global Filter Kullan\u0131m\u0131 - Okan Karada\u011f","og_description":"EntityFramewok Core 6.0'da global filter nas\u0131l kullan\u0131l\u0131r? Onu bu g\u00f6nderide inceleyece\u011fiz ve \u00f6rnekler yapaca\u011f\u0131z.","og_url":"https:\/\/okankaradag.com\/en\/entityframework-core\/entityframework-core-global-filter-kullanimi\/","og_site_name":"Okan Karada\u011f","article_published_time":"2022-10-29T14:43:48+00:00","article_modified_time":"2022-10-29T14:46:03+00:00","og_image":[{"width":1100,"height":688,"url":"https:\/\/okankaradag.com\/wp-content\/uploads\/2022\/10\/earth2-scaled-e1667054751726.jpg","type":"image\/jpeg"}],"author":"Okan Karada\u011f","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Okan Karada\u011f","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi#article","isPartOf":{"@id":"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi"},"author":{"name":"Okan Karada\u011f","@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52"},"headline":"EntityFramework Core Global Filter Kullan\u0131m\u0131","datePublished":"2022-10-29T14:43:48+00:00","dateModified":"2022-10-29T14:46:03+00:00","mainEntityOfPage":{"@id":"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi"},"wordCount":232,"commentCount":0,"publisher":{"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52"},"keywords":["asp.net core","ef core","filter","query"],"articleSection":[".Net","C#","EntityFramework Core"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi#respond"]}]},{"@type":"WebPage","@id":"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi","url":"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi","name":"EntityFramework Core Global Filter Kullan\u0131m\u0131 - Okan Karada\u011f","isPartOf":{"@id":"https:\/\/okankaradag.com\/#website"},"datePublished":"2022-10-29T14:43:48+00:00","dateModified":"2022-10-29T14:46:03+00:00","description":"EntityFramewok Core 6.0'da global filter nas\u0131l kullan\u0131l\u0131r? Onu bu g\u00f6nderide inceleyece\u011fiz ve \u00f6rnekler yapaca\u011f\u0131z.","breadcrumb":{"@id":"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/okankaradag.com\/entityframework-core\/entityframework-core-global-filter-kullanimi#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/okankaradag.com\/"},{"@type":"ListItem","position":2,"name":"EntityFramework Core Global Filter Kullan\u0131m\u0131"}]},{"@type":"WebSite","@id":"https:\/\/okankaradag.com\/#website","url":"https:\/\/okankaradag.com\/","name":"Okan Karada\u011f","description":"Programlama \u00dczerine","publisher":{"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/okankaradag.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/0196919c5e3b6a496101ded872640d52","name":"Okan Karada\u011f","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/okankaradag.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ca08a5537d7e304914c37189abedd2a1?s=96&d=mm&r=g","caption":"Okan Karada\u011f"},"logo":{"@id":"https:\/\/okankaradag.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/okankaradag.com"],"url":"https:\/\/okankaradag.com\/en\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts\/772"}],"collection":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/comments?post=772"}],"version-history":[{"count":11,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts\/772\/revisions"}],"predecessor-version":[{"id":785,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/posts\/772\/revisions\/785"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/media\/784"}],"wp:attachment":[{"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/media?parent=772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/categories?post=772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/okankaradag.com\/en\/wp-json\/wp\/v2\/tags?post=772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}