使用SqlConnection.GetSchema仅获取表(无视图)

Ste*_*eve 4 c# sql-server ado.net views sqlconnection

我用的时候

SqlConnection.GetSchema("Tables");
Run Code Online (Sandbox Code Playgroud)

它返回目标数据库的所有表和视图.

有没有办法只返回表?我所做的所有研究表明我正确地做了这一点,但它总是返回视图,就像它们是表格一样.我在调试中挖掘了DataTable,我甚至找不到区别.报告的数据类型相同......据我所知,它无法区分视图和表.(它在某种程度上是有意义的,因为所有意图和目的的视图都是一个表.)

我正在使用Northwind数据库进行测试.

我在C#中编写应用程序.

这是我运行以获取架构信息的代码.很简单.

SQLCon.Open();
DataTable tables = SQLCon.GetSchema("Tables");
SQLCon.Close();
Run Code Online (Sandbox Code Playgroud)

我非常想使用getschema方法而不必以另一种方式查询数据库......如果可能的话.

Bee*_*Guy 6

根据这篇文章,返回的数据表有一列table_type,告诉你它是a VIEW还是a BASE TABLE.
使用该列过滤掉C#端的视图.


Dav*_*ave 6

这是完整的语法

DataTable table = connection.GetSchema("Tables", new string[] { null, null, null, "BASE TABLE" });
Run Code Online (Sandbox Code Playgroud)