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

У меня есть модель, извлеченная из базы данных. Позже я удалил таблицу из базы данных, но не обновил модель. Теперь я должен выполнить тест, чтобы проверить, существует ли таблица в модели, но не в базе данных. Может кто-нибудь сказать мне, как проверить это с помощью кода?

Ответы [ 3 ]

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

Вы можете подключиться к базе данных и получить таблицу information_schema.Tables, а затем проверить, есть ли там все таблицы, которые вы ожидаете получить.

Чтобы получить все таблицы, используемые вашим Linq-to-Sql DataContext:

var dataContext = new DataContext();
var dataContextTableNames = (from tables in dataContext.Mapping.GetTables()
                             select tables.TableName).ToList();

Затем, используя выбранный вами метод sql, вы должны запустить "SELECT [TABLE_NAME] FROM [Information_Schema]. [Таблицы] "в вашей базе данных и сравните ее с данными в вашем DataContext.

1 голос
/ 24 декабря 2010

Ну, быстрым и простым способом может быть попытка затем вставить или выбрать что-либо в или из таблицы, используя Model и Linq-to-Sql, и проверить, выбрасывается ли исключение SQLException.Я не уверен, что вы можете поймать что-то конкретное в исключении, например, SQLTableDoesNotExistException, но в отладчике должно быть довольно легко увидеть, есть ли какие-то конкретные свойства исключительного исключения, которые вы можете различить между другими исключениями SQLExceptions.

0 голосов
/ 26 декабря 2010

Хм .. похоже, вы пытаетесь написать новые тесты.Разве у вас нет интеграционных тестов для проверки взаимодействия таблиц и сущностей прежде, чем вы удалите эти таблицы?

Эти интеграционные тесты не пройдут, как только таблица будет удалена из базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...