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 (11520)
5 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 (11520)
5 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)
10 ay ö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