在创建多个表时对表列表进行排序以便正确引用

时间:2015-08-04 03:53:42

标签: c# sql-server

假设我有一个要创建的表列表,其中一些表引用其他表(在表列表中)。所以我循环每个表并找到它引用的表,然后将它们移动到列表的顶部以便首先创建它们。具体来说:

List<string> lstTemp = new List<string>(listTables);
foreach (string table in lstTemp)
{
    foreach (string tbl in GetReferenceTablesOf(table))
    {
        int index = lstTemp.IndexOf(tbl);
        listTables.Move(index, 0);
    }
}

问题在于,当有很多表引用其他表时,列表的顺序不是我想要的。例如,表B引用表A,因此表A将移动到列表的顶部(index = 0),但是在几个循环之后,表B由于其他表引用到表B而移到顶部并导致执行'alter table add constraint ...'查询时出错。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我建议你先创建所有表,不要有任何引用(外键等)。创建所有表后,然后按照您想要的任何顺序创建所有引用。