Проблема с частичными проектами в Visual Studio Database Pro
В выпуске Visual Studio 2008 Database можно использовать "частичные проекты", чтобы разделить базу данных на несколько проектов для развертывания и сопровождения. Я пытался сделать это с нашим проектом, но столкнулся со следующей загадкой:
Если у вас есть проект, который определяет некоторые базовые таблицы, а затем у вас есть другой проект, который определяет новый набор таблиц, которые имеют ограничения, указывающие на таблицы в первом проекте, DBPro, похоже, не сможет отобразить эту взаимосвязь. Конкретная ошибка:
"CONSTRAINT имеет неразрешенную ссылку на таблицу foo" (где foo находится в исходной БД).
Более конкретный пример, если вы хотите продублировать для себя сценарий:
Создайте проект с именем BaseDB.
Определите в BaseDB таблицу с именем Users со следующим DDL:
CREATE TABLE [dbo].[Users] ( UserID INT IDENTITY(1,1) PRIMARY KEY, UserName NVARCHAR(20) NOT NULL )
Экспортируйте BaseDB как частичный проект, добавив в проект файл _BaseDB.files.
Создайте проект в том же решении под названием DerivedDB
Используйте Импортировать частичный проект, чтобы указать на BaseDB, подтверждая, если вам нравится, что в файлах импорта есть ссылка на заглушку, указывающая на таблицу Users в BaseDB.
Определите таблицу в DerivedDB с именем PowerUsers со следующим DDL:
CREATE TABLE [dbo].[PowerUsers] ( PowerUserID INT IDENTITY(1,1) PRIMARY KEY, UserID INT NOT NULL )
Если вы делаете "Build" на этом этапе, все работает.
Добавьте FOREIGN KEY CONSTRAINT в проекте DerivedDB из PowerUsers для пользователей со следующим DDL:
ALTER TABLE [dbo].[PowerUsers] ADD CONSTRAINT [PowerUsers_Users_FK] FOREIGN KEY (UserID) REFERENCES [dbo].[Users] (UserID)
Выполнение вышеуказанных шагов должно позволить вам увидеть ошибку, о которой я говорю.
Вопросы:
Есть ли способ исправить ссылки на ограничения в проектах базы данных?
Если нет, следует ли зарезервировать частичные проекты для серии хранимых процедур, а базовый проект - для всех DDL базовых таблиц и ограничений?