在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项目中的FOREIGN KEY CONSTRAINT从PowerUsers添加到具有以下DDL的用户:
ALTER TABLE [dbo].[PowerUsers]
ADD CONSTRAINT [PowerUsers_Users_FK]
FOREIGN KEY (UserID)
REFERENCES [dbo].[Users] (UserID)
执行上述步骤应该可以让您看到我正在谈论的错误。
问题:
有没有办法修复数据库项目中的约束引用?
如果没有,那么是否应该为一系列存储过程保留部分项目,并为基本表和约束的所有 DDL保留基础项目?