Проблема с частичными проектами в 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)
    

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

Вопросы:

  1. Есть ли способ исправить ссылки на ограничения в проектах базы данных?

  2. Если нет, следует ли зарезервировать частичные проекты для серии хранимых процедур, а базовый проект - для всех DDL базовых таблиц и ограничений?

0 ответов

Другие вопросы по тегам