Entity Framework ile proje geliştirdiğimde karşılaştığım “Validation failed for one or more entities. See ‘EntityValidationErrors’ property for more details” hatanın sebebi ve çözümü.
Entity Framework ‘Validation Failed For One Or More Entities. See ‘EntityValidationErrors’ Property For More Details’ Hatası
Karşılaştığım bu hatanın tam hali;
1 2 3 4 5 | System.Data.Entity.Validation.DbEntityValidationException: Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. at System.Data.Entity.Internal.InternalContext.SaveChanges() at System.Data.Entity.Internal.LazyInternalContext.SaveChanges() at System.Data.Entity.DbContext.SaveChanges() at DataLayer.CategoryManage.isSuccess(XXXXXXX entity) in YYYYYYYYYYY.cs:line 63 |
Bu hatayla karşılaşma sebeplerinin bazıları şöyle olabilir.
- Null değeri kabul edilmeyen bir alana null değeri veriyor olmanız
- Kullandığınız string tipteki alanlar için girilebilecek maksimum karakter sayısını aşmış olabilirsiniz.
- Kullandığınız DateTime tipindeki alanlar için maksimum veya minimum değeri aşmış olabilirsiniz.
- Kullandığınız tinyint,bigint,int v.b. sayısal tipteki alanlar için minimum veya maksimum değeri aşmış olabilirsiniz.
Yalnız başlıkta belirtilen hata birçok sebepten çıkabilmektedir ben sadece yaşadığım sorunu belirtip bu gibi hatayla karşılaşanların alternatif bir çözümü olabilmesi için yazıyorum.
DbEntityValidationException türündeki exception içeriği elde edebilmek için kodlarınızı try-catch blokları arasına koyup catch bloğu içerisinde alttaki gibi alanlar ile ilgili hataları elde edebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | try { // Kodlarınız context.SaveChanges(); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } |
İlginçtir kodu ekledikten sonra hata ortadan kalktı. Teşekkür ederim.
MERHABA,
mesajbox’a nasıl evrilebilir bu kontrol üstadım
Merhaba hata almaya devam ediyorum görüntüyü de ekliyorum .
şimdi aldığım
https://www.hizliresim.com/pdlggk7
önceki
https://www.hizliresim.com/jw8kho1
Makale içerisinde belirtilen yöntem bahsedilen hatanın otomatik giderilmesini sağlamıyor. Size hatanın nerede olduğunu söylüyor.
Çok teşekkürler işime yaradı.
Rica ederim
elinize sağlık güzel olmuş.sayenizde hatayı çözdüm…
Tesekkür ederim çok işime yaradı
İhtiyacınızı karşılamasına sevindim.
çok kaliteli bir bilgi teşekkür ederim hocam 5 saattir kafayı yemiş nerede hata diye ararken bi an tc ve telefon için mask kullandığımı anımsadım direk kod değişimi yapmadan veritabanını oluştururken uzunlıuk50 olarak değiştirdim çalıştırdım direk kayıt başarılı.. 🙂 çok güzel bilgi teşekkür ederim
Teşekkür ederim, değerli görünüz için.
ee kardeşim problem var çözüm yazmamışsın dalgamı geöiyorsun
Daha düzgün üslup ile eleştirilerini dile getirmeni tavsiye ederim, ama yine de bu üslubunu gözmezden gelip makaleyi daha anlaşılır hale getirip yorumunu yayınlıyorum.