3

Visual Studio 2008 データベース エディションでは、"部分プロジェクト" を使用して、配置と保守性のためにデータベースを複数のプロジェクトに分割できます。私は私たちのプロジェクトでこれを行うことを検討していましたが、次の障害にぶつかりました:

いくつかのベース テーブルを定義するプロジェクトがあり、最初のプロジェクトのテーブルを指す制約を持つ新しいテーブル セットを定義する別のプロジェクトがある場合、DBPro はこの関係をマップできないようです。具体的なエラーは次のとおりです。

「CONSTRAINT にはテーブル foo への未解決の参照があります」(foo は元の DB にあります)。

シナリオを自分で複製したい場合のより具体的な例:

  • BaseDB というプロジェクトを作成します。

  • 次の DDL を使用して、BaseDB で Users というテーブルを定義します。

    CREATE TABLE [dbo].[Users] ( 
        UserID INT IDENTITY(1,1) PRIMARY KEY, 
        UserName NVARCHAR(20) NOT NULL
    )
    
  • _BaseDB.files ファイルをプロジェクトに追加して、BaseDB を部分プロジェクトとしてエクスポートします。

  • DerivedDB という同じソリューションでプロジェクトを作成します。

  • Import Partial Project を使用して BaseDB を参照し、インポート ファイルに BaseDB の Users テーブルを参照するスタブ参照があるかどうかを確認します。

  • 次の DDL を使用して、PowerUsers という DerivedDB のテーブルを定義します。

    CREATE TABLE [dbo].[PowerUsers] ( 
        PowerUserID INT IDENTITY(1,1) PRIMARY KEY, 
        UserID INT NOT NULL
    )
    
  • この時点で「ビルド」を実行すると、すべてが機能します。

  • 次の DDL を使用して、DerivedDB プロジェクトに FOREIGN KEY CONSTRAINT を PowerUsers から Users に追加します。

    ALTER TABLE [dbo].[PowerUsers]
        ADD CONSTRAINT [PowerUsers_Users_FK]
        FOREIGN KEY (UserID)
        REFERENCES [dbo].[Users] (UserID)
    

上記の手順を実行すると、私が話しているエラーを確認できるはずです。

質問:

  1. データベース プロジェクト間で制約参照を修正する方法はありますか?

  2. そうでない場合、一連のストアド プロシージャ用に部分プロジェクトを予約し、ベース テーブルと制約のすべてのDDL 用にベース プロジェクトを予約する必要がありますか?

4

0 に答える 0