DbEntityValidationException - Nasıl kolayca bu hata neyin sebep olduğunu söyleyebilir miyim?
Varlık Çerçeve kullanan bir projem var. DbContext
, SaveChanges
Arama sırasında aşağıdaki özel durum alıyorum:
Sistem.Veri.Varlık.Doğrulama.DbEntityValidationException: Doğrulama bir veya daha fazla varlıkları için başarısız oldu. 'EntityValidationErrors' özelliğine bakın daha fazla bilgi için.
Bu tüm ince ve züppe, ama her zaman bu durum oluşur bir hata ayıklayıcı eklemek istemiyorum. Daha fazla, üretim ortamlarında ben büyük çaba bu hataları yeniden gitmem gerek bu kadar kolay olamaz, bir hata ayıklayıcı bağlayın.
Nasıl detayları DbEntityValidationException
içinde saklı görebilir miyim?
CEVAP
En kolay çözüm varlıkları üzerinde SaveChanges
sınıf geçersiz kılmak için. ** 5, kaydırma gerçek hataları yakalamak ve gelişmiş ileti DbEntityValidationException
yeni bir oluşturabilirsiniz.
- Kısmi bir sınıf SomethingSomething yanında oluşturun.Bağlam.cs dosyası.
- Bu yazının altındaki kodu kullanabilirsiniz.
- İşte bu kadar. Uygulamanız otomatik olarak yeniden işsiz geçersiz SaveChanges kullanacaktır.
Özel Mesajınızı şimdi bu gibi görünecektir:
Sistem.Veri.Varlık.Doğrulama.DbEntityValidationException: Doğrulama bir veya daha fazla varlıkları için başarısız oldu. 'EntityValidationErrors' özelliğine bakın daha fazla bilgi için. Hata doğrulama: alan PhoneNumber uzunluğu dize veya dizi türü olmalıdır '12'; Soyad alan gereklidir.
DbContext
devralan herhangi bir sınıfta geçersiz kılınmış SaveChanges bırakabilirsiniz:
public partial class SomethingSomethingEntities
{
public override int SaveChanges()
{
try
{
return base.SaveChanges();
}
catch (DbEntityValidationException ex)
{
// Retrieve the error messages as a list of strings.
var errorMessages = ex.EntityValidationErrors
.SelectMany(x => x.ValidationErrors)
.Select(x => x.ErrorMessage);
// Join the list to a single string.
var fullErrorMessage = string.Join("; ", errorMessages);
// Combine the original exception message with the new one.
var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);
// Throw a new DbEntityValidationException with the improved exception message.
throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
}
}
}
DbEntityValidationException
da doğrulama hatalarına neden varlıkları içerir. Eğer daha fazla bilgiye ihtiyacınız varsa, bu kişiler hakkında çıkış bilgileri için, yukarıdaki kod ile değiştirebilirsiniz.
Ayrıca bakınız: http://devillers.nl/improving-dbentityvalidationexception/
Bir yığın izleme, nedir ve nasıl uygul...
Nasıl hata ayıklamayı son ne zaman IIS...
Nasıl Android üzerinde javascript hata...
Nasıl bir parametre olması bekleniyor ...
Nasıl yeni bir Rails uygulaması oluştu...