Validation Failed For One Or More Entities, Bu hataya veritabanındaki bir alanın boyutunun aşması sonucunda ulaştım. Bu sorunun çözümü için ise projemin debug’da hangi alana fazla değer gönderdiğini bulup hatayı giderdim yalnız veritabanında ki çok farklı işlemler sonucunda bu ‘entities validation’ hatasına düşebilirsiniz.
Validation Failed For One Or More Entities Hata Çözümü
EntityFramework’de SaveChanges işlemi sonucunda aldığım hata şu şekildedir.
Validation failed for one or more entities. See ‘EntityValidationErrors’ property for more details.
Çözümü ise anlatmış olduğum gibi tablomdaki alanda değer taşması yani alana vermiş olduğum boyuttan daha fazla değer aktarımı yapmaya çalışmamdan kaynaklanan bir hatadır fakat ‘Entities validation’ hatası veritabanında oluşabilecek bir çok hata için karşınıza çıkabilecektir.
Sorunun hangi alanda kaynaklandığını ve neden kaynaklandığını öğrenmek için ise SaveChanges() metodunu try catch blokları içerisine alıp cath bloguna alttaki kodu ekleyin çıkan hata sonucunu ise isterseni veritabanına kaydedebilir isterseniz text doyasında log olarak tutabilir isterseniz throw ile kullanıcıya hatayı göstertebilirsiniz.
Hatanın neden ve nerde kaynaklandığını bulabilmek için kullanacağınız kod bloğu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | try { gn.SaveChanges(); } catch (DbEntityValidationException dbValEx) { var outputLines = new StringBuilder(); foreach (var eve in dbValEx.EntityValidationErrors) { outputLines.AppendFormat("{0}: Entity of type "{1}" in state "{2}" has the following validation errors:" , DateTime.Now, eve.Entry.Entity.GetType().Name, eve.Entry); foreach (var ve in eve.ValidationErrors) { outputLines.AppendFormat("- Property: "{0}", Error: "{1}"" , ve.PropertyName, ve.ErrorMessage); } } //Tools.Notify(this, outputLines.ToString(),"error"); throw new DbEntityValidationException(string.Format("Validation errorsrn{0}" , outputLines.ToString()), dbValEx); } |
Özet
Makaleyi özetlemek gerekirse sadece veritabanında ki bir alanın max girilebileceği değeri aşması sonucu değil, veritabanında yaşanabilecek tüm tip uyuşmazlığı ve veri taşması sonucu tüm konularda bu başlıkta bir hata ile karşılaşmanız büyük olası bir durumdur. O yüzden üstteki örnek kod bloğunu generic olarak tüm her yerde yakabilecek şekilde yapınıza uydurup bu hataları merkezi bir yere loglamak projenizin hata çözme noktasında ki süreyi çok kısaltacaktır. Diğer türlü hatanın yaşnma senaryosunu tekrar elde edip senaryoyu debug ortamınızda manuel yakalayacaksınız ve hatayı düzeltmek için ilgili düzenlemeleri yapacaksınız gibi döngü sürekli yapıldığında çok hoş karşılanacak bir durum olmaktan çıkacaktır. Bu noktada aslında önem arz eden bir durum olduğunu belirtmekte fayda var.
📚 Validation Failed For One Or More… Benzeri Makaleler
- .NET EntityFramework The Entity Cannot Be Constructed İn A LINQ To Entities Query Hatası Ve Çözümü
- Entity Framework Code First İle Oluşturulan Sınıflarda Bazı Property”leri Yoksayma
- Entity Framework The Version Of SQL Server İn Use Does Not Support Datatype “datetime2” Hatası
- ASP.NET MVC Unable to update the EntitySet “because it has a DefiningQuery” Hatası ve Çözümü
✍ Lütfen olumlu-olumsuz tüm görüşlerinizi bana yorum yada mail yolu ile iletmeyi ihmal etmeyin.
🔗 Sosyal medya kanallarından makaleyi paylaşarak destek olursanız çok sevinirim.
👋 Bir sonraki makalede görüşmek dileğiyle.