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 表