Проверьте, существует ли таблица в базе данных, но нет в модели - PullRequest
0 голосов
/ 23 декабря 2010

Я использую Entity Data Model в моем проекте Asp.net MVC.Мне нужно проверить, существует ли таблица в базе данных, но не в модели.Может ли кто-нибудь помочь мне, как проверить на уровне контроллера для целей тестирования.

1 Ответ

2 голосов
/ 23 декабря 2010

Вы не упоминаете, какую базу данных используете, но я предполагаю, что это SQL Server.

Вот как вы получаете список таблиц:

USE YourDBName
GO 
SELECT *
FROM sys.Tables

Вы можете использовать Ado.Net для выполнения запроса или добавить таблицу таблиц в модель данных вашего объекта.

ОБНОВЛЕНО

Вот еще несколько способов. Возможно, вам придется адаптировать их к вашим потребностям.

[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'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...