Как получить ошибку времени компиляции при изменении схемы базы данных? - PullRequest
2 голосов
/ 14 марта 2009

Какой метод вы используете, чтобы получить ошибку времени компиляции при изменении схемы базы данных в проекте ASP.NET?

Например, если у вас есть GridView, связанный с источником данных, я могу получать ошибки времени выполнения только при изменении схемы, а не во время компиляции. Intellisense отлично работает с кодом, использующим наборы данных, LINQ и т. Д., Но я не могу получить ошибку времени компиляции на странице ASP.NET при изменении схемы.

Любой совет?

Ответы [ 4 ]

2 голосов
/ 14 марта 2009

Создайте модульный тест, который проверяет правильность вашего уровня доступа к данным, и убедитесь, что он охватывает весь код, связанный с БД. Не все можно поймать во время компиляции ...

1 голос
/ 14 марта 2009

Одним из способов, с помощью которого я могу легко достичь такого поведения, будет привязка данных к динамическому DAL. Есть несколько инструментов, которые могут помочь в создании этого поколения DAL, я рекомендую взглянуть на SubSonic .

Если у вас есть что-то вроде SubSonic, вы можете связываться с получающимися бизнес-объектами. Эти бизнес-объекты автоматически изменятся в случае изменения схемы в базе данных, и это нарушит ваш код привязки, что приведет к ошибке времени компиляции.

Обновление

Рекомендация Ассафа по использованию модульных тестов также является хорошей идеей. Это не решит вашу заявленную проблему, но это определенно то, что должно быть на месте, и это отличный инструмент для обозначения таких проблем.

0 голосов
/ 14 марта 2009

Одним из решений будет версия вашей базы данных и сопоставление сборки приложения с конкретной версией (возможно, в файле свойств). В точке входа вашего приложения вы можете сравнить ожидаемую версию с фактической версией и соответственно обработать ошибку.

Я не уверен, что эквивалентно в ASP.net Migrations in Rails или dbdeploy в Java для управления версиями вашей базы данных. Но любой инструмент управления версиями БД, который делает изменения схемы инкрементными и версионными и отслеживает версию в таблице версий, подойдет для этой цели.

Но если вы хотите получить ошибку времени компиляции при сборке приложения, вы также можете обновить свою схему до последней версии в рамках процесса сборки, избегая, в первую очередь, возможности изменения схемы.

0 голосов
/ 14 марта 2009

Мы используем скромную систему (от xml до c ++) для создания схем из независимого описания, эта система также создает имена для таблиц и столбцов, которые мы используем внутри кода, когда происходит изменение схемы, изменяются имена, как имена, которые мы изначально использовали, больше не существуют, и компилятор выдаст сообщение об ошибке.

Вероятно, вы можете настроить множество инструментов генерации DAO для выполнения чего-то подобного.

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