private TableMapping GetMappedTable(TableMapping parent, string tableName, string ns)
{
TableMapping map = tables [tableName];
if (map != null)
{
if (parent != null && map.ParentTable != null && map.ParentTable != parent)
{
throw new DataException(String.Format("The table '{0}' is already allocated as a child of another table '{1}'. Cannot set table '{2}' as parent table.", tableName, map.ParentTable.Table.TableName, parent.Table.TableName));
}
}
else
{
map = new TableMapping(tableName, ns);
map.ParentTable = parent;
tables.Add(map);
}
if (parent != null)
{
bool shouldAdd = true;
foreach (TableMapping child in parent.ChildTables)
{
if (child.Table.TableName == tableName)
{
shouldAdd = false;
break;
}
}
if (shouldAdd)
{
parent.ChildTables.Add(map);
}
}
return(map);
}