कई लोगों की तरह, मैं अपने खुद के मानक डेटा का उपयोग घटक है, जो एक डेटासेट वापस जाने के लिए तरीकों में शामिल किया है। बेशक, अगर एक कॉन्स्ट्रेन्ट अपवाद फेंक दिया जाता है, तो डेटासेट कॉलर को वापस नहीं किया जाता है, इसलिए कॉलर पंक्ति त्रुटियों की जांच नहीं कर सकता है।
मैं क्या किया है, पकड़ और इस तरह के तरीकों में rethrow ConstraintException है पंक्ति त्रुटि विवरण प्रवेश करने, निम्न उदाहरण में (जो प्रवेश के लिए log4net का उपयोग करता है):
...
try
{
adapter.Fill(dataTable); // or dataSet
}
catch (ConstraintException)
{
LogErrors(dataTable);
throw;
}
...
private static void LogErrors(DataSet dataSet)
{
foreach (DataTable dataTable in dataSet.Tables)
{
LogErrors(dataTable);
}
}
private static void LogErrors(DataTable dataTable)
{
if (!dataTable.HasErrors) return;
StringBuilder sb = new StringBuilder();
sb.AppendFormat(
CultureInfo.CurrentCulture,
"ConstraintException while filling {0}",
dataTable.TableName);
DataRow[] errorRows = dataTable.GetErrors();
for (int i = 0; (i < MAX_ERRORS_TO_LOG) && (i < errorRows.Length); i++)
{
sb.AppendLine();
sb.Append(errorRows[i].RowError);
}
_logger.Error(sb.ToString());
}
मैं आपको और अधिक अप-वोट करता है, तो मैं कर सकता देना चाहते हैं। यह मेरी तरफ भी एक कांटा है। –