У меня есть ситуация, когда я работаю в новой базе данных, построенной с использованием проекта базы данных Visual Studio 2010, в котором определено число синонимов , которые указывают на наше наследство базы данных.
Наш план заключается в создании представлений об этих синонимах; таблицы, на которые ссылаются, ужасны, поэтому представления изменят данные в лучший формат; после этого мы будем использовать Entity Framework для предоставления ORM для этих представлений (идея заключается в том, что мы можем поменять представления для реальных таблиц при переносе данных).
Проблема: Я могу написать синонимы в проекте базы данных без проблем. Однако, когда я пытаюсь создать представление, которое ссылается на эти синонимы, я сталкиваюсь с ошибкой, похожей на:
Error 1 SQL03006: View: [dbo].[Person] has an unresolved reference to object [dbo].[ma_contact].
... где [dbo].[Person]
- это новое представление, а [dbo].[ma_contact]
- синоним устаревшей таблицы.
Обходной путь: Поместите все сценарии создания представления в Script.PostDeployment.sql
, выполняя логику if-существующие-then-drop-then-create вручную.
Это далеко не идеально, хотя пока пригодно для жизни. У кого-нибудь есть идеи относительно того, как сделать эти взгляды «правильно»?