Validation failed for one or more entities. See 'EntityValidationErrors' property for more details

0

Asp.Net MVC ve Entity Framework kullanan web uygulamamda şu şekilde hata alıyorum:
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details

icerik.Okunma = icerik.Okunma ?? 0;
                icerik.Rating = icerik.Rating ?? 0;
                icerik.ToplamOylayan = icerik.ToplamOylayan ?? 0;
                icerik.AnaHaber = string.IsNullOrEmpty(icerik.AnaHaberGorselTur) ? false : true;

                db.Icerik.Add(icerik);
                db.SaveChanges();

Validation failed for one or more entities. See 'EntityValidationErrors' property for more details hatası almamın nedeni ne olabilir?

alattin alattin (13485)
6 yıl önce sordu

Toplam 2 Cevap


1

Validation failed for one or more entities. See 'EntityValidationErrors' property for more details hatasının pek çok farklı sebebi olabilir. En çok yapılan hatalar:

  1. Veritabanında (database) NULL olamaz olarak yapılandırılmış (Allow Nulls işareti kaldırılmış) bir alana NULL değer girmeye çalışmak
  2. Belirtilen üst sınır dışında veri giriyi yapmaya çalışmak, örneğin, nvarchar(5) olan bir alana 5 karakterden uzun veri girişi yapmaya çalışmak.

yukarıdaki iki hata en çok yapılan hatalardır.

Hatayı yakalayabilmek için try catch blogundan yararlanabilirsiniz.

 try
            {
                icerik.Okunma = icerik.Okunma ?? 0;
                icerik.Rating = icerik.Rating ?? 0;
                icerik.ToplamOylayan = icerik.ToplamOylayan ?? 0;
                icerik.AnaHaber = string.IsNullOrEmpty(icerik.AnaHaberGorselTur) ? false : true;

                db.Icerik.Add(icerik);
                db.SaveChanges();

            }
            catch (DbEntityValidationException e)
            {

                foreach (var eve in e.EntityValidationErrors)
                {
                   Response.Write(string.Format("Entity türü \"{0}\" şu hatalara sahip \"{1}\" Geçerlilik hataları:", eve.Entry.Entity.GetType().Name, eve.Entry.State));
                    foreach (var ve in eve.ValidationErrors)
                    {
                        Response.Write(string.Format("- Özellik: \"{0}\", Hata: \"{1}\"", ve.PropertyName, ve.ErrorMessage));
                    }
                    Response.End();
                }

 

alattin alattin (13485)
6 yıl önce cevaplandı

0

private void simpleButton1_Click(object sender, EventArgs e)
        {
             NorthwindTestEntities src = new NorthwindTestEntities();
            
           

            Category ctg = new Category();
           
            ctg.CategoryName =this.textEdit1.Text.ToString();
            ctg.Description =this.textEdit2.Text.ToString();
            ctg.Picture = null;

            src.Categories.Add(ctg);
            src.SaveChanges();

            dataGridView3.DataSource = src.Categories.ToList();
            

        }

Textedit sonrası Text yazarak sorunu hallettim. Sanırsam girilen değeri Text'e çevirerek işleyebiliyor. Null ve karakter sınırı olaylarını denedikten sonra deneyebilirsiniz.

wixpey wixpey (1)
1 yıl önce cevaplandı

üyelik gerektirir

Cevap yazabilmek için üye girişi yapmalısınız.

Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol