﻿
{"id":3770,"date":"2016-03-26T04:47:41","date_gmt":"2016-03-26T04:47:41","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=3770"},"modified":"2016-03-26T04:47:41","modified_gmt":"2016-03-26T04:47:41","slug":"entity-framework-code-firstte-ivalidatableobject-ile-kolonlara-validasyon-ayarlama","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-firstte-ivalidatableobject-ile-kolonlara-validasyon-ayarlama\/","title":{"rendered":"Entity Framework &#8211; Code First&#8217;te IValidatableObject \u0130le Kolonlara Validasyon Ayarlama"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu yaz\u0131m\u0131zda Entity Framework mimarisinin Code First yakla\u015f\u0131m\u0131nda, IValidatableObject Interface&#8217;i ile kolonlara validasyon uygulamay\u0131 detayl\u0131 bir \u015fekilde irdeleyece\u011fiz.<\/p>\n<p>\u00d6rnek ama\u00e7l\u0131 a\u015fa\u011f\u0131daki \u00f6\u011frenci tablosunu temsil eden s\u0131n\u0131f\u0131m\u0131z\u0131 baz alaca\u011f\u0131z.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Ogrenci\r\n    {\r\n        public int OgrenciID { get; set; }\r\n        public string Adi { get; set; }\r\n        public string SoyAdi { get; set; }\r\n        public string Memleketi { get; set; }\r\n    }\r\n<\/pre>\n<p>Validasyon uygulayaca\u011f\u0131m\u0131z s\u0131n\u0131fa \u00f6ncelikle &#8220;System.ComponentModel.DataAnnotations&#8221; k\u00fct\u00fcphanesini using etmeliyiz. Ard\u0131ndan ilgili k\u00fct\u00fcphane i\u00e7erisindeki &#8220;IValidatableObject&#8221; Interface&#8217;inden s\u0131n\u0131f\u0131m\u0131z\u0131 t\u00fcretmeliyiz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Ogrenci : System.ComponentModel.DataAnnotations.IValidatableObject\r\n    {\r\n        public int OgrenciID { get; set; }\r\n        public string Adi { get; set; }\r\n        public string SoyAdi { get; set; }\r\n        public string Memleketi { get; set; }\r\n\r\n        public IEnumerable&lt;ValidationResult&gt; Validate(ValidationContext validationContext)\r\n        {\r\n\r\n        }\r\n    }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi &#8220;IValidatableObject&#8221; Interface&#8217;ini implement ettikten sonra &#8220;Validate&#8221; isimli metodu uygulamaktad\u0131r. \u0130\u015fte bu metod i\u00e7erisinde validasyonlar\u0131m\u0131z\u0131 ger\u00e7ekle\u015ftirece\u011fiz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Ogrenci : System.ComponentModel.DataAnnotations.IValidatableObject\r\n    {\r\n        public int OgrenciID { get; set; }\r\n        public string Adi { get; set; }\r\n        public string SoyAdi { get; set; }\r\n        public string Memleketi { get; set; }\r\n\r\n        public IEnumerable&lt;ValidationResult&gt; Validate(ValidationContext validationContext)\r\n        {\r\n            if (Adi.Length &lt; 5 || Adi.Length &gt; 35)\r\n            {\r\n                yield return new ValidationResult(&quot;Ad\u0131n\u0131z 5'ten b\u00fcy\u00fck, 35'ten k\u00fc\u00e7\u00fck olmal\u0131d\u0131r.&quot;, new List&lt;string&gt; { &quot;Adi&quot; });\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<p>\u00d6rnek olarak yukar\u0131daki i\u015flemi incelerseniz e\u011fer &#8220;Adi&#8221; kolonuna bir kontrol uygulanm\u0131\u015ft\u0131r. Bu kontrol neticesinde geriye mesaj niteli\u011finde bir de\u011fer d\u00f6nebiliyoruz.<\/p>\n<p>Proje ile veritaban\u0131 aras\u0131nda ba\u011flant\u0131y\u0131 olu\u015fturacak Context s\u0131n\u0131f\u0131n\u0131 ve gerekli i\u015flemleri yapt\u0131\u011f\u0131m\u0131z\u0131 varsay\u0131yorum. E\u011fer bu i\u015flemler hakk\u0131nda bir fikriniz yoksa \u00f6ncelikle <a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-ile-code-first-yaklasimi\/\" target=\"_blank\">Entity Framework \u0130le Code First Yakla\u015f\u0131m\u0131<\/a> ba\u015fl\u0131kl\u0131 makalemi okuyunuz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Program\r\n    {\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            OkulDBContext Veri = new OkulDBContext();\r\n            if (!Veri.Database.Exists())\r\n            {\r\n                Veri.Database.Create();\r\n            }\r\n\r\n            Ogrenci ogrenci = new Ogrenci();\r\n            ogrenci.Adi = &quot;Can&quot;;\r\n            Veri.Ogrenciler.Add(ogrenci);\r\n            Veri.SaveChanges();\r\n\r\n            Console.Read();\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer &#8220;Adi&#8221; kolonundaki validasyona uymayacak \u015fekilde bir veri girilmi\u015ftir. Haliyle SaveChanges() metodu \u00e7a\u011fr\u0131ld\u0131\u011f\u0131 anda a\u015fa\u011f\u0131daki olas\u0131 durumla kar\u015f\u0131la\u015f\u0131yoruz.<\/p>\n<div id=\"attachment_3772\" style=\"width: 452px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-firstte-ivalidatableobject-ile-kolonlara-validasyon-ayarlama\/entity-framework-code-firstte-ivalidatableobject-ile-kolonlara-validasyon-ayarlama-2\/\" rel=\"attachment wp-att-3772\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3772\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-Firstte-IValidatableObject-\u0130le-Kolonlara-Validasyon-Ayarlama.png\" alt=\"Entity Framework - Code First&#039;te IValidatableObject \u0130le Kolonlara Validasyon Ayarlama\" width=\"442\" height=\"134\" class=\"size-full wp-image-3772\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-Firstte-IValidatableObject-\u0130le-Kolonlara-Validasyon-Ayarlama.png 442w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-Firstte-IValidatableObject-\u0130le-Kolonlara-Validasyon-Ayarlama-300x91.png 300w\" sizes=\"auto, (max-width: 442px) 100vw, 442px\" \/><\/a><p id=\"caption-attachment-3772\" class=\"wp-caption-text\">Entity Framework &#8211; Code First&#8217;te IValidatableObject \u0130le Kolonlara Validasyon Ayarlama<\/p><\/div>\n<p>Hele birde \u015fu komutlar\u0131 try catch bloklar\u0131na ald\u0131\u011f\u0131m\u0131zda bakal\u0131m&#8230;<br \/>\n<div id=\"attachment_3774\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-firstte-ivalidatableobject-ile-kolonlara-validasyon-ayarlama\/entity-framework-code-firstte-ivalidatableobject-ile-kolonlara-validasyon-ayarlama-3\/\" rel=\"attachment wp-att-3774\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3774\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-Firstte-IValidatableObject-\u0130le-Kolonlara-Validasyon-Ayarlama-1.png\" alt=\"Entity Framework - Code First&#039;te IValidatableObject \u0130le Kolonlara Validasyon Ayarlama\" width=\"540\" height=\"453\" class=\"size-full wp-image-3774\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-Firstte-IValidatableObject-\u0130le-Kolonlara-Validasyon-Ayarlama-1.png 540w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-Firstte-IValidatableObject-\u0130le-Kolonlara-Validasyon-Ayarlama-1-300x252.png 300w\" sizes=\"auto, (max-width: 540px) 100vw, 540px\" \/><\/a><p id=\"caption-attachment-3774\" class=\"wp-caption-text\">Entity Framework &#8211; Code First&#8217;te IValidatableObject \u0130le Kolonlara Validasyon Ayarlama<\/p><\/div><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi &#8220;EntityValidationErrors&#8221; \u00fczerinden validasyonun mesaj\u0131na eri\u015febiliyoruz.<\/p>\n<h3Peki Birden Fazla Nesne Validasyona Tak\u0131l\u0131rsa?<\/h3>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Program\r\n    {\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            OkulDBContext Veri = new OkulDBContext();\r\n            if (!Veri.Database.Exists())\r\n            {\r\n                Veri.Database.Create();\r\n            }\r\n\r\n            Ogrenci ogrenci = new Ogrenci();\r\n            ogrenci.Adi = &quot;Can&quot;;\r\n            Ogrenci ogrenci2 = new Ogrenci();\r\n            ogrenci2.Adi = &quot;Ali&quot;;\r\n            Ogrenci ogrenci3 = new Ogrenci();\r\n            ogrenci3.Adi = &quot;Cem&quot;;\r\n            Ogrenci ogrenci4 = new Ogrenci();\r\n            ogrenci4.Adi = &quot;abdurrahman uzunkavakalt\u0131ndayataruyuro\u011fullar\u0131&quot;;\r\n            Veri.Ogrenciler.Add(ogrenci);\r\n            Veri.Ogrenciler.Add(ogrenci2);\r\n            Veri.Ogrenciler.Add(ogrenci3);\r\n            Veri.Ogrenciler.Add(ogrenci4);\r\n            try\r\n            {\r\n                Veri.SaveChanges();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n\r\n            }\r\n\r\n            Console.Read();\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki durumu incelersek e\u011fer sonu\u00e7 a\u015fa\u011f\u0131daki gibi olacakt\u0131r.<br \/>\n<div id=\"attachment_3776\" style=\"width: 501px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.gencayyildiz.com\/blog\/entity-framework-code-firstte-ivalidatableobject-ile-kolonlara-validasyon-ayarlama\/entity-framework-code-firstte-ivalidatableobject-ile-kolonlara-validasyon-ayarlama-4\/\" rel=\"attachment wp-att-3776\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3776\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-Firstte-IValidatableObject-\u0130le-Kolonlara-Validasyon-Ayarlama-2.png\" alt=\"Entity Framework - Code First&#039;te IValidatableObject \u0130le Kolonlara Validasyon Ayarlama\" width=\"491\" height=\"286\" class=\"size-full wp-image-3776\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-Firstte-IValidatableObject-\u0130le-Kolonlara-Validasyon-Ayarlama-2.png 491w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/03\/Entity-Framework-Code-Firstte-IValidatableObject-\u0130le-Kolonlara-Validasyon-Ayarlama-2-300x175.png 300w\" sizes=\"auto, (max-width: 491px) 100vw, 491px\" \/><\/a><p id=\"caption-attachment-3776\" class=\"wp-caption-text\">Entity Framework &#8211; Code First&#8217;te IValidatableObject \u0130le Kolonlara Validasyon Ayarlama<\/p><\/div><br \/>\nYani demek istedi\u011fim o ki, ka\u00e7 nesnede validasyona tak\u0131n\u0131ld\u0131ysa o kadar hata elde edilmekte, bir ba\u015fka deyi\u015fle t\u00fcm hatalara ula\u015f\u0131labilmektedir.<\/p>\n<p>E\u011fer Validation hatalar\u0131n\u0131 Error almaks\u0131z\u0131n yakalamak istiyorsan\u0131z e\u011fer Context s\u0131n\u0131f\u0131 \u00fczerinden &#8220;GetValidationErrors&#8221; metodunu kullanabilirsiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Program\r\n    {\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            OkulDBContext Veri = new OkulDBContext();\r\n            if (!Veri.Database.Exists())\r\n            {\r\n                Veri.Database.Create();\r\n            }\r\n\r\n            Ogrenci ogrenci = new Ogrenci();\r\n            ogrenci.Adi = &quot;Can&quot;;\r\n\r\n            Veri.Ogrenciler.Add(ogrenci);\r\n\r\n            var Hatalar = Veri.GetValidationErrors();\r\n            if (!Hatalar.Any())\r\n            {\r\n                Veri.SaveChanges(); \r\n            }\r\n\r\n\r\n            Console.Read();\r\n        }\r\n    }\r\n<\/pre>\n<p>Tabi \u00f6rnektede yapt\u0131\u011f\u0131m gibi e\u011fer &#8220;GetValidationErrors&#8221; metodu sonucunda hata verileri geliyorsa &#8220;SaveChanges&#8221; metodunu devreye sokmam\u0131z gerekmektedir.<\/p>\n<p>Faydalanman\u0131z dileklerimle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<\/p>\n<p>\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, Bu yaz\u0131m\u0131zda Entity Framework mimarisinin Code First yakla\u015f\u0131m\u0131nda, IValidatableObject Interface&#8217;i ile kolonlara validasyon uygulamay\u0131 detayl\u0131 bir \u015fekilde irdeleyece\u011fiz. \u00d6rnek ama\u00e7l\u0131 a\u015fa\u011f\u0131daki \u00f6\u011frenci tablosunu temsil eden s\u0131n\u0131f\u0131m\u0131z\u0131 baz alaca\u011f\u0131z. class Ogrenci { public int&#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":3739,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[955],"tags":[952,975,963,984,983,982,985],"class_list":["post-3770","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-entity-framework","tag-code-first","tag-ef","tag-entity-framework","tag-getvalidationerrors","tag-ivalidatableobject","tag-system-componentmodel-dataannotations","tag-validasyon"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3770","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=3770"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3770\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3739"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=3770"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=3770"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=3770"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}