Visual Studio 数据库项目约束 - 表脚本或单独的文件?

Posted

技术标签:

【中文标题】Visual Studio 数据库项目约束 - 表脚本或单独的文件?【英文标题】:Visual Studio Database Project Constraints - Table Script or separate file? 【发布时间】:2013-04-02 10:25:45 【问题描述】:

在 Visual Studio 数据库项目中,我看到表约束以两种不同的方式添加:

    作为用于创建表的同一脚本文件的一部分,在 CREATE TABLE 语句之后; 在单独的文件中,保存在“Tables\Constraints”文件夹中,每个文件一个约束。

是否有充分的理由去做其中之一?

从 SQL Server 导入数据库时​​,Visual Studio 排第二,所以我猜这是最好的方法,但我不明白为什么。从开发人员的角度来看,数字 1 似​​乎更好,因为它使表定义和约束彼此“更接近”。

【问题讨论】:

【参考方案1】:

我只能想出将它们放在一起的原因(#1),正是因为您提到的原因:它使表定义和约束彼此更接近。

Visual Studio 过去将约束保存在单独的文件中,但在 SQL Server Data Tools 引入的最新“SQL Server 数据库项目”模板中停止了这种做法(开箱即用地安装在 VS 2012 中,需要单独下载 VS 2010 )。

【讨论】:

只是为了让您最终升级到 SSDT 数据库项目时更容易,选择 #1!或者为什么不从一开始就使用 SSDT 数据库项目?【参考方案2】:

强烈投票给#1。将约束与表脚本分开使得以后添加不可为空的列变得非常痛苦。部署时,生成的 ALTER TABLE 脚本将无法将 NOT NULL 列添加到具有现有数据的表中,因为它没有 DEFAULT 约束。如果约束已经在 CREATE TABLE 脚本中,ALTER TABLE 将使用它,一切都会正常工作。

【讨论】:

以上是关于Visual Studio 数据库项目约束 - 表脚本或单独的文件?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Visual Studio 数据库项目中的数据将外键约束添加到现有表

Microsoft Visual Studio2013 新建项目时“弹出未找到约束”对话框

Windows小技巧11--Visual Studio 未找到与约束ContractName *** 错误

在 Visual Studio 2012/2010 数据库项目中获取 cdc 表

Visual Studio SQL Server 2016 数据库项目和临时表

Visual Studio - 无法查看表数据