Sql server 将dmo属性映射到smo-How

Sql server 将dmo属性映射到smo-How,sql-server,smo,Sql Server,Smo,我开发了一个实用程序,可以使用不推荐的DMO对象为所有SQL Server对象编写脚本。我打算升级到SMO,但无法找到相应的属性,例如,在DMO中,我们有 Table.getKeys().Count,SQLDMO.Key,Table.getKeys() 你能给我指一些文档或教程吗?因为我发现微软的网站不是很有用 我试图用SMO替换DMO,但正如我所说的,无法找到一些映射。以下是一段原始DMO代码: If TB.getKeys().Count > 0 Then For

我开发了一个实用程序,可以使用不推荐的DMO对象为所有SQL Server对象编写脚本。我打算升级到SMO,但无法找到相应的属性,例如,在DMO中,我们有
Table.getKeys().Count
SQLDMO.Key,Table.getKeys()

你能给我指一些文档或教程吗?因为我发现微软的网站不是很有用

我试图用SMO替换DMO,但正如我所说的,无法找到一些映射。以下是一段原始DMO代码:

    If TB.getKeys().Count > 0 Then
        For Each k As SQLDMO.Key In TB.getKeys()
        KName = k.Name
        Select Case k.Type
        Case SQLDMO.SQLDMO_KEY_TYPE.SQLDMOKey_Primary, sqlMO.SQLDMO_KEY_TYPE.SQLDMOKey_Unique
        kExt = ".PKY"
        Case SQLDMO.SQLDMO_KEY_TYPE.SQLDMOKey_Foreign
        kExt = ".FKY"
        End Select

没有这样的映射!但是,您可以稍微修改代码

要枚举外键,请使用以下代码段

 ForeignKeyCollection fk = tbl.ForeignKeys;
  foreach (ForeignKey f in fk)
  {
     Console.WriteLine(f.Columns);
  }
IndexCollection uk = tbl.Indexes;

            foreach (Index i in uk)
            {
                Console.WriteLine(i.Name + ' ' + i.IsClustered + ' ' + i.IsUnique);
            }
索引也是如此。因此,您可以按如下方式使用代码段

 ForeignKeyCollection fk = tbl.ForeignKeys;
  foreach (ForeignKey f in fk)
  {
     Console.WriteLine(f.Columns);
  }
IndexCollection uk = tbl.Indexes;

            foreach (Index i in uk)
            {
                Console.WriteLine(i.Name + ' ' + i.IsClustered + ' ' + i.IsUnique);
            }
更新-主键 对于主键,请查看代码段

ColumnCollection cols = tbl.Columns;

            foreach (Column c in cols)
            {
                Console.WriteLine(c.InPrimaryKey);
            }
互联网上没有很好的资源。 但是你可以试试这个

这个呢


谢谢,主键呢?