Visual Studio Database Pro 部分项目约束问题

发布于 2024-07-12 08:20:34 字数 1445 浏览 11 评论 0原文

在 Visual Studio 2008 数据库版本中,可以使用“部分项目”来允许将数据库分成多个项目以进行部署和维护。 我一直在考虑在我们的项目中执行此操作,但遇到了以下障碍:

如果您有一个定义一些基表的项目,然后您有一个不同的项目,它定义了一组新的表,这些表的约束指向第一个表中的表项目中,DBPro似乎无法映射这种关系。 具体错误是:

“CONSTRAINT 具有对表 foo 的未解析引用”(其中 foo 位于原始数据库中)。

如果您想为自己复制该场景,可以使用更具体的示例:

  • 创建一个名为 BaseDB 的项目。

  • 在 BaseDB 中定义一个名为 Users 的表,使用以下 DDL:

    创建表 [dbo].[用户] (  
          用户ID INT IDENTITY(1,1) 主键,  
          用户名 NVARCHAR(20) NOT NULL 
      ) 
      
  • 将 BaseDB 导出为部分项目,并将 _BaseDB.files 文件添加到项目中。

  • 在名为 DerivedDB 的同一解决方案中创建一个项目

  • 使用导入部分项目指向 BaseDB,确认您是否喜欢导入中存在存根引用指向 BaseDB 中的 Users 表的文件。

  • 使用以下 DDL 在 DerivedDB 中定义一个名为 PowerUsers 的表:

    创建表 [dbo].[PowerUsers] (  
          PowerUserID INT IDENTITY(1,1) 主键,  
          用户ID INT NOT NULL 
      ) 
      
  • 如果此时执行“构建”,则一切正常。

  • 使用以下 DDL 在 DerivedDB 项目中从 PowerUsers 到 Users 添加外键约束:

    更改表 [dbo].[PowerUsers] 
          添加约束 [PowerUsers_Users_FK] 
          外键(用户 ID) 
          参考文献 [dbo].[用户](用户 ID) 
      

执行上述步骤应该可以让您看到我正在讨论的错误。

问题:

  1. 有没有办法修复跨数据库项目的约束引用?

  2. 如果不是,是否应该为一系列存储过程保留部分项目,并为基表和约束的所有 DDL 保留基本项目?

    如果

In Visual Studio 2008 Database edition one can use "partial projects" to allow a database to be separated into multiple projects for deployment and maintainability. I have been looking into doing this with our project but hit the following snag:

If you have project that defines some base tables, and then you have a different project that defines a new set of tables that have constraints pointing to the tables in the first project, DBPro seems unable to map this relationship. The specific error is:

"CONSTRAINT has an unresolved reference to Table foo" (where foo is in the original DB).

A more concrete example if you'd like to duplicate for yourself the scenario:

  • Create a Project called BaseDB.

  • Define in BaseDB a table called Users with the following DDL:

    CREATE TABLE [dbo].[Users] ( 
        UserID INT IDENTITY(1,1) PRIMARY KEY, 
        UserName NVARCHAR(20) NOT NULL
    )
    
  • Export BaseDB as a partial project adding the _BaseDB.files file to your project.

  • Create a Project in the same solution called DerivedDB

  • Use the Import Partial Project to point to BaseDB, confirming if you like that there's a stub reference in your import files pointing to the Users table in BaseDB.

  • Define a table in DerivedDB called PowerUsers with the following DDL:

    CREATE TABLE [dbo].[PowerUsers] ( 
        PowerUserID INT IDENTITY(1,1) PRIMARY KEY, 
        UserID INT NOT NULL
    )
    
  • If you do a "Build" at this point, everything works.

  • Add a FOREIGN KEY CONSTRAINT in the DerivedDB project from PowerUsers to Users with the following DDL:

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

Performing the above steps should allow you to see the error I'm talking about.

Questions:

  1. Is there a way to fix constraint references across database projects?

  2. If not, should partial projects then be reserved for series of stored procedures and the base project reserved for all DDL of base tables and constraints?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文