首页 > 解决方案 > 使用核心/模型数据库,在不同的安装上进行小改动,无需重复代码即可进行定制

问题描述

例如,核心数据库如下所示:

Person  - Id, FirstName, LastName
Address - Id, Street, ZipCode

该模型用于大多数安装,但对于一些安装,我想添加自定义列,假设StateAddress客户 X 和BirthDate客户PersonY的列。

现在,我不想将这些列添加到核心数据库,因为该State列仅由我们的美国客户使用,BirthDate而仅由我们的欧洲客户使用BirthDate是强制性的 ( NOT NULL),因此需要为所有其他列提供一个虚拟值顾客。

我在 GitHub 上查看是否有多个分支 -Core并且US-Customer- 但这意味着整个Core解决方案将被复制到US-Customer分支,但是当Core分支更改时,它不会更新US-Customer分支,即必须基本上维护两个存储库。

是否有可能在定制的解决方案(例如)SQL Data Tools中进行这种定制,只有绝对必要的更改,并且不会在丢失表或任何其他错误中引发错误?GitHubUS-CustomerSQL Data ToolsVisual 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

标签: sql-server-data-toolssql-data-tools

解决方案


没有非常简单的方法来实现。如果您希望完全以 SSDT 方式执行此操作,则需要创建几个项目:

  • ProjectCore --> 将拥有所有共享对象。它不应该引用以下项目;
  • ProjectUS --> 将拥有所有 US 对象并引用ProjectCoreThe same database;
  • ProjectEU --> 将拥有 EU 的所有对象并引用ProjectCoreThe same database.

两者都ProjectUSProjectEU拥有自己的发布配置文件。您将在那里放置不同对象的完整定义,而不仅仅是 ALTER 语句。


推荐阅读