在 .Net 应用程序中反映 SQL Server 数据库架构及其所有对象的最简单方法是什么?
基本上我希望我的应用程序扫描数据库模式并向我展示所有表和其他对象。此外,我还应该能够探索所有表列及其属性(类型、约束等)。
我计划使用数据访问应用程序块来满足我的数据访问需求。是否也符合上述要求?
在 .Net 应用程序中反映 SQL Server 数据库架构及其所有对象的最简单方法是什么?
基本上我希望我的应用程序扫描数据库模式并向我展示所有表和其他对象。此外,我还应该能够探索所有表列及其属性(类型、约束等)。
我计划使用数据访问应用程序块来满足我的数据访问需求。是否也符合上述要求?
你可以使用任何你想要的数据访问方法——你只需要在数据库上运行正确的查询。这篇文章似乎有一个很好的例子来说明你想要什么。
SQL Server 提供了一些可以使用的系统视图,例如sys.tables
列出所有表、sys.columns
所有列等。
MSDN 有一个常见问题解答。
尽管您可以对 SQL Server 的元数据表使用查询,但访问此信息的最简洁方法是使用Sql Server 管理对象 (SMO)。
要使用此示例,请参考 Microsoft.SqlServer.ConnectionInfo、Microsoft.SqlServer.Management.Sdk.Sfc 和 Microsoft.SqlServer.Smo。
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
var sqlConnection = new SqlConnection(@"Data Source=(local);Integrated Security=SSPI");
var server = new Server(new ServerConnection(sqlConnection));
foreach (Database database in server.Databases)
{
foreach (Table table in database.Tables)
{
Console.WriteLine("{0}: {1}", database.Name, table.Name);
}
}