सबसे आसान उपाय यह है SaveChangesकि आप अपने एंटिटीज़ क्लास को ओवरराइड करें। आप DbEntityValidationExceptionवास्तविक त्रुटियों को पकड़ सकते हैं, और DbEntityValidationExceptionबेहतर संदेश के साथ एक नया बना सकते हैं ।
- अपनी SomeSomething.Context.cs फ़ाइल के बगल में एक आंशिक वर्ग बनाएँ।
- इस पोस्ट के नीचे दिए गए कोड का उपयोग करें।
- बस। आपका कार्यान्वयन स्वचालित रूप से बिना किसी रिफलेक्टर के काम के ओवरराइड सेवचेंज का उपयोग करेगा।
आपका अपवाद संदेश अब इस तरह दिखेगा:
System.Data.Entity.Validation.DbEntityValidationException: सत्यापन एक या अधिक संस्थाओं के लिए विफल हुआ। अधिक विवरण के लिए 'EntityValidationErrors' संपत्ति देखें। सत्यापन त्रुटियां हैं: फ़ील्ड PhoneNumber में एक स्ट्रिंग या सरणी प्रकार होना चाहिए जिसकी अधिकतम लंबाई '12' है; LastName फ़ील्ड आवश्यक है।
आप किसी भी वर्ग में ओवरराइड किए गए SaveChanges को इनहेरिट कर सकते हैं DbContext:
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भी संस्थाएं जो सत्यापन त्रुटियों की वजह से होता है। इसलिए यदि आपको और भी अधिक जानकारी की आवश्यकता है, तो आप इन संस्थाओं के बारे में जानकारी के लिए उपरोक्त कोड को बदल सकते हैं।
इन्हें भी देखें: http://devillers.nl/improving-dbentityvalidationexception/