Use SqlConnection.GetSchema to get Tables Only (No

2019-01-27 00:27发布

When I use

SqlConnection.GetSchema("Tables");

it returns all the tables AND views for the target database.

Is there any way to just return tables? All the research I have done indicates I am doing this correctly yet it always returns the views like they are tables. I have dug down into the DataTable in debug and I can't even find a difference. The data types are reported the same... As far as I can tell, it can't differentiate between a view and a table. (It does make sense in a way since a view for all intents and purposes IS a table.)

I am using the Northwind database for testing.

I am writing the application in C#.

Here is the code that I am running to get the schema info. Pretty simple.

SQLCon.Open();
DataTable tables = SQLCon.GetSchema("Tables");
SQLCon.Close();

I would very much like to use the getschema method and not have to query the database in another fashion... if at all possible.

2条回答
对你真心纯属浪费
2楼-- · 2019-01-27 01:07

According to this article, the returned data table has a column table_type, which tells you whether it's a VIEW or a BASE TABLE.
Use that column to filter out the views on your C# end.

查看更多
地球回转人心会变
3楼-- · 2019-01-27 01:10

Here is the complete syntax

DataTable table = connection.GetSchema("Tables", new string[] { null, null, null, "BASE TABLE" });
查看更多
登录 后发表回答