我在我的Asp.net MVC项目中使用实体数据模型框架。我需要检查表是否存在于数据库中但不存在于模型中。任何人都可以帮助我检查控制器级别的测试目的。
答案 0 :(得分:2)
您没有提到您正在使用的数据库,但我认为它是SQL Server。
以下是获取表格列表的方法:
USE YourDBName
GO
SELECT *
FROM sys.Tables
您可以使用Ado.Net运行查询,也可以将Tables表添加到实体数据模型中。
已更新
以下是其他一些方法。您可能需要根据自己的需要进行调整。
[dbo]。[sysobjects]为每个对象包含一行,例如在数据库中创建的约束,表,视图,存储过程,函数等。要确定对象的类型,您将查询包含对象类型的[xtype]列。对于用户表,[xtype]值为'U',代表用户表。
SELECT [Name] FROM [dbo].[sysobjects]
WHERE [xtype] = 'U'
第二种方法是查询[Information_Schema]。[Tables]系统视图。 [Information_Schema]。[Tables]系统视图包含当前用户具有权限的当前数据库中每个表的一行。此viw基于[dbo]。[sysobjects]系统表。 [Information_Schema]。[Tables]系统视图还将包含列表中的视图。要仅筛选出用户表,您只会输出[Table_Type]为“BASE TABLE”的记录,如以下查询所示:
SELECT * FROM [Information_Schema].[Tables]
WHERE [Table_Type] = 'BASE TABLE'
在数据库中列出用户表的第三种方法是使用sp_tables系统存储过程。 sp_tables系统存储过程返回可以出现在FROM子句中的对象列表。由于您只关心用户表而不关心系统表或视图,因此必须将@table_type参数设置为“'TABLE'”,如以下查询所示:
EXEC sp_tables @table_type = "'TABLE'"