DbEntityValidationException ile Validasyon hatalarını yakalama

“Validation failed for one or more entities. See ‘EntityValidationErrors’ property for more details” hatası aldığınız zaman aklınıza ilk gelen şey veritabanınızda null olmayan bir alana null bir değer vermiş olabilirsiniz veya  20 karakterlik bir string alanımız vardır buna 20 karakterden fazla bir kelime girmişsek bu hata ile karşılaşacağız.

Bu hatayı aldığımız zaman bize hangi alan ile ilgili durum olduğunu söylemeyecektir. Bu kısmını try-catch bloğunda catch(Exception ex) yerine catch(DbEntityValidationException ex) yazarak ulaşabiliriz.

catch (DbEntityValidationException ex)
{
    foreach (var errs in ex.EntityValidationErrors)
    {
         Response.Write(string.Format("Entity türü \"{0}\" şu hatalara sahip \"{1}\" Geçerlilik hataları:", errs.Entry.Entity.GetType().Name, errs.Entry.State))
        foreach (var err in errs.ValidationErrors)
        {
            Response.Write(string.Format("- Özellik: \"{0}\", Hata: \"{1}\"", err.PropertyName, err.ErrorMessage));
            var propName = err.PropertyName;
            var errMess = err.ErrorMessage;
        }
    }
}

err.PropertyName alanında hatanın hangi alandan dolayı oluştuğunu size söyleyecektir.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s