在 Visual Studio 2008 数据库版本中,可以使用“部分项目”来允许将数据库分成多个项目以进行部署和维护。我一直在考虑在我们的项目中这样做,但遇到了以下问题:
如果您的项目定义了一些基表,然后您有一个不同的项目定义了一组新表,这些表具有指向第一个项目中表的约束,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 的同一解决方案中创建一个项目
使用 Import Partial Project 指向 BaseDB,确认您是否喜欢在您的导入文件中有一个存根引用指向 BaseDB 中的 Users 表。
使用以下 DDL 在 DerivedDB 中定义一个名为 PowerUsers 的表:
CREATE TABLE [dbo].[PowerUsers] ( PowerUserID INT IDENTITY(1,1) PRIMARY KEY, UserID INT NOT NULL )
如果您此时进行“构建”,一切正常。
在 DerivedDB 项目中从 PowerUsers 添加 FOREIGN KEY CONSTRAINT 到具有以下 DDL 的用户:
ALTER TABLE [dbo].[PowerUsers] ADD CONSTRAINT [PowerUsers_Users_FK] FOREIGN KEY (UserID) REFERENCES [dbo].[Users] (UserID)
执行上述步骤应该可以让您看到我正在谈论的错误。
问题:
有没有办法修复跨数据库项目的约束引用?
如果不是,那么是否应该为一系列存储过程保留部分项目,而为基表和约束的所有DDL 保留基本项目?