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

alattin (17127) 11 yıl önce sordu

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?

Toplam 2 cevap


alattin (17127) 11 yıl önce cevapladı

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();
                }

 

wixpey (1) 6 yıl önce cevapladı
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.