在C#中使用Smo-在开始时跳过约束生成指令

在C#中使用Smo-在开始时跳过约束生成指令,c#,.net,sql-server,smo,C#,.net,Sql Server,Smo,我必须创建远程数据库的完整副本。我只有一种有用且简单的方法:生成脚本。我知道其他方法(例如,创建备份),但由于某些原因,我无法使用它们 由于一个表可能依赖于另一个表(具有外键等),因此很难确定创建表的有效顺序,因此我决定在最后生成这些“可靠”的脚本指令 嗯,我知道如何在(接近)表创建中生成“可靠”的脚本指令。但是我应该怎么做才能先跳过它们,然后在最后生成它们呢 例如: --How I do NOT want --......................... CREATE TABLE Tab

我必须创建远程数据库的完整副本。我只有一种有用且简单的方法:生成脚本。我知道其他方法(例如,创建备份),但由于某些原因,我无法使用它们

由于一个表可能依赖于另一个表(具有外键等),因此很难确定创建表的有效顺序,因此我决定在最后生成这些“可靠”的脚本指令

嗯,我知道如何在(接近)表创建中生成“可靠”的脚本指令。但是我应该怎么做才能先跳过它们,然后在最后生成它们呢

例如:

--How I do NOT want
--.........................
CREATE TABLE Table1(....)
ALTER TABLE Table1 ADD CONSTRAINT ...

CREATE TABLE Table2(....)
ALTER TABLE Table2 ADD CONSTRAINT ...



--How I would like
--.........................
CREATE TABLE Table1(....)
CREATE TABLE Table2(....)
--.........................
CREATE TABLE TableN(....)
--.........................
--the end of a script
ALTER TABLE Table1 ADD CONSTRAINT .....

您可能有一些代码已经在表中循环,并在每个表上调用
Script()
方法。您要做的是创建一个对象,将其DriForeignKeys属性设置为false,并使用ScriptingOptions对象作为参数调用
Script()
方法。然后,在循环遍历所有表之后,您需要再次执行此操作,这次是为了提取外键。

大概,您已经有代码在表中循环,并在每个表上调用
Script()
方法。您要做的是创建一个对象,将其DriForeignKeys属性设置为false,并使用ScriptingOptions对象作为参数调用
Script()
方法。然后,在遍历所有表之后,您需要再次执行此操作,这次是为了拾取外键。

当我再次执行此操作时,如何仅拾取外键脚本指令而不拾取表的脚本指令?表对象具有ForeignKeys属性。对每个表遍历该集合并编写每个表的脚本。当我要再次执行此操作时,如何仅拾取外键脚本指令而不拾取表的脚本指令?表对象具有ForeignKeys属性。对每个表遍历该集合并编写每个表的脚本。