sql-server-data-tools - 使用核心/模型数据库,在不同的安装上进行小改动,无需重复代码即可进行定制
问题描述
例如,核心数据库如下所示:
Person - Id, FirstName, LastName
Address - Id, Street, ZipCode
该模型用于大多数安装,但对于一些安装,我想添加自定义列,假设State
为Address
客户 X 和BirthDate
客户Person
Y的列。
现在,我不想将这些列添加到核心数据库,因为该State
列仅由我们的美国客户使用,BirthDate
而仅由我们的欧洲客户使用BirthDate
是强制性的 ( NOT NULL
),因此需要为所有其他列提供一个虚拟值顾客。
我在 GitHub 上查看是否有多个分支 -Core
并且US-Customer
- 但这意味着整个Core
解决方案将被复制到US-Customer
分支,但是当Core
分支更改时,它不会更新US-Customer
分支,即必须基本上维护两个存储库。
是否有可能在定制的解决方案(例如)SQL Data Tools
中进行这种定制,只有绝对必要的更改,并且不会在丢失表或任何其他错误中引发错误?GitHub
US-Customer
SQL Data Tools
Visual Studio
例子:
Core
分支
Person - Id, FirstName, LastName
Address - Id, Street, ZipCode
US-Customer
分支
ALTER TABLE Address ADD State CHAR(2) NOT NULL
EU-Customer
分支
ALTER TABLE Person ADD BirthDate DATE NOT NULL
解决方案
没有非常简单的方法来实现。如果您希望完全以 SSDT 方式执行此操作,则需要创建几个项目:
- ProjectCore --> 将拥有所有共享对象。它不应该引用以下项目;
- ProjectUS --> 将拥有所有 US 对象并引用
ProjectCore
为The same database
; - ProjectEU --> 将拥有 EU 的所有对象并引用
ProjectCore
为The same database
.
两者都ProjectUS
将ProjectEU
拥有自己的发布配置文件。您将在那里放置不同对象的完整定义,而不仅仅是 ALTER 语句。
推荐阅读
- c# - 无法使用内容同步操作 (syncrepl) 从 OpenLDAP 服务器获取已删除的项目
- build - 如何对诸如 Build/Rebuild 之类的 msbuild 内置目标设置条件?
- javascript - JavaScript:以像素为单位获取背景位置
- c# - 如何禁用 MaterialDesignInXaml 按钮动画?
- r - 我可以提取包含R中任何字符串向量的字符串吗
- mysql - Mysql:更新触发器错误:操作数应包含 1 列
- d3.js - d3 设置不同于 ZoomIdentity 的默认缩放配置
- sql - 当某些值重复而其他值不重复时,如何选择具有最新日期的值?
- jquery - SAP UI5 JQuery 拖放不起作用
- php - 发布请求以在标头中发送 apikey