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;
}