使用SMO DependencyWalker生成脚本但获取外键约束

时间:2014-10-20 11:05:24

标签: c# sql-server smo

我正在使用SMO' DependencyWalker来浏览我的依赖项和脚本插入。

var insertScripter = new Scripter(server)
{
     Options =
     {
          ScriptSchema = false, 
          ScriptData = true,
          SchemaQualify = false
     }
};

var tables = db.Tables.OfType<Table>()
    .Where(tb => tb.IsSystemObject == false)
    .Cast<SqlSmoObject>()
    .ToArray();

var dependencyWalker = new DependencyWalker(server);
var dependencyTree = dependencyWalker.DiscoverDependencies(tables.ToArray(), DependencyType.Parents);
var dependencies = dependencyWalker.WalkDependencies(dependencyTree);

foreach (var dependency in dependencies)
{
  foreach (var s in insertScripter.EnumScript(new[] { dependency.Urn}))
  {
    writer.WriteLine(s); 
  }
}

出于某种原因,我在运行脚本时仍然会遇到外键约束? 这怎么可能?

1 个答案:

答案 0 :(得分:0)

尝试使用这种形式的方法DiscoverDependencies(UrnCollection, Boolean)并将布尔值设置为$ false;它对我有用。

关于正确的参数,Rhumborl的评论是正确的。