Merging typed DataSets can cause a "Merge Constraint" error, which explains the problem, but doesn't help much in solving it. Here's how to find the exact cause of the error:
try
{
//set Constrainsts check to false, so that the merge is fast.
datasetOne.EnableConstraints = false;
dbHelper.ExecuteDataSet(datasetOne, "dsOne", "spname");
//Any error on merge will be caugt below
datasetOne.Merge(datasetTwo);
//set constrainsts check to true, so that we catch the exact error.
datasetOne.EnableConstrainst = true;
}
catch (System.Data.DataException de)
{
foreach (DataTable table in datasetOne.Tables)
{
foreach (DataRow row in table.GetErrors())
{
foreach (DataColumn column in row.GetColumnsInError())
{
//loop through each column in the row that has caused the error
//during the bind and show it.
string ErrorMessage = string.Format(
"datasetOne bind failed due to Error : {0}"
, row.GetColumnError(column));
DataException dataException = new DataException(ErrorMessage, de);
throw dataException;
}
}
}
}