Çünkü bu makalenin yeniden basımı Kaynak burada belirtilmiş, eğer bazı makaleler artık kaynak bulamıyor veya başka nedenlerle daha önce aktarılmışsa lütfen affedin.
Alındıysanız, lütfen benimle iletişime geçin, silin ya da kaynağını belirtin.
Eskiden sadece iyi makaleler toplamak isterdim ama bazen bağlantı bozuluyor, şimdi iyi bir makaleyle karşılaştığımda doğrudan kendime yöneliyorum.
Orijinal kaynak http://blog.csdn.net/snowinfish/article/details/11567301
VS2012'de ADO.NET varlık modeline veri yazarken, sürekli "DbEntityValidationException işlenmedi" ve "Bir veya daha fazla varlığın doğrulaması başarısız oldu. Daha fazla bilgi için EntityValidationErrors Properties sayfasına bakınız.
Sonraki iki varlığı kendim test ettim, özellikle "operate911" kaynaklı hata.
Bilgileri çevrimiçi kontrol ettim ve aşağıdaki makaleye başvurdum.
EntityValidationErrors detaylarını görüntüleme için geçici çözümler
http://www.cnblogs.com/zhourq/archive/2011/11/03/2234720.html
Ancak, istisna yazılırken, sistemde "DbEntityValidationException" belirtisi yoktur; bu da isim alanı referansının eksikliği olarak tahmin edilir.
Böylece eklenir:
[csharp] Plaincopy görüntü System.Data.Validation kullanarak;
İlgili prosedür şu şekilde değiştirilir: [csharp] Plaincopy görüntü Denemek { varlıklar. Operate911.Add(operatione911); varlıklar. SaveChanges(); } catch (DbEntityValidationException dbEx) {
} Başlat, istisna çağrısı yok, "operate911" veri veritabanı tablosuna yazmıyor. Kontrol edilmenin nedeni, bir ek program yazarken boş kalmasına izin verilmeyen bir sütun için veri doldurulmaması ve modifikasyondan sonra programın başlatılması ve testin başarılı olmasıdır.
Ancak, istisna yazmazsanız, en üst hatayı sormaya devam edin.
Ayrıca, "catch (DbEntityValidationException dbEx)" cümlesinden sonra "dbEx" parametresi yazılmadan da yazılabilir.
Bilinmez olmaya devam ediyor...
09.12 Ek:
Yukarıdaki deneme ve yakalama hatalı yazılmıştır ve istisna atılmaz, ancak şu şekilde değiştirilmiştir:
[csharp] Plaincopy görüntü Denemek { var operateSpt = yeni OperateSpt(ymd, timeNow, Operate); varlıklar. Operasyon Spres.Add(Operasyon Çalışması); varlıklar. SaveChanges(); }
catch (DbEntityValidationException örneğin) { MessageBox.Show(örneğin. Mesaj); }
Sonuçlar aşağıdaki şekilde gösterilmiştir.
Bilinmez olmaya devam ediyor...
Ek: Problem çözme.
Sebep: Yazılı veriler tablo ayarlarıyla tutarsızdır.
Sebebim, belirli bir adımda yazılı verilerin boş olması, ancak orijinal tablonun "boş olmasına izin verilmediği" olarak ayarlanması, bu yüzden bu adım yapıldığında bir istisna olması.
Çok dikkatsizdim ve verilere bakarken veriye yazılmış diğer işlemleri gördüğümde bu sorunu hiç düşünmedim.
|