如何只使用C#获取SQL Server数据库中的表列表以及主键?

5 c# sql-server code-generation

给定一个数据库,如何检索表列表以及每个表的主键?

谢谢.

编辑:这是我正在制作的代码生成工具,我需要以某种方式使用C#运行SQL脚本.

Ran*_*ric 6

这本身不使用T-SQL.它自己生成它,但不会像使用将获得相同信息的确切的短T-SQL那样高效.

using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;

public class LoadStuff
{
    string mDatabaseConnectionString = "Something";
    ...
    public void LoadDatabase(string tDatabaseName)
    {
        using (var vSqlConnection = new SqlConnection(mDatabaseConnectionString))
        {
            var vConnection = new ServerConnection(vSqlConnection);
            var vServer = new Server(vConnection);
            var vDatabase = vServer.Databases[tDatabaseName];
            var vTables = vDatabase.Tables;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

集合"vTables"中的每个对象都将是该数据库中名为vDatabaseName的表的定义.

该表将包含一组列,并且可以找到主键循环遍历每个表的"列"属性.主键中的任何列都将其属性"InPrimaryKey"标记为true.

此外,您必须在使用块结束之前从各种对象中获取所有信息.在整个过程完成后,我开始制作只有我需要的信息的迷你类,但你可能只是从代码生成中吐出代码.

  • @Rangoric - 只是好奇你的变量上的'v'前缀代表什么? (2认同)