如何解决使用核心/模型数据库在不同的安装上进行小的更改以进行自定义,而无需重复代码
例如核心数据库如下所示:
Person - Id,FirstName,LastName
Address - Id,Street,ZipCode
此模型用于大多数安装,但对于一些安装,我想添加自定义列,假设列 State
到 Address
用于客户 X 和 BirthDate
为客户 Y Person
。
现在,我不想将这些列添加到核心数据库中,因为 State
列仅由我们的美国客户使用,而 BirthDate
仅由我们的欧洲客户使用 {{ 1}} 是强制性的 (BirthDate
),因此所有其他客户都需要一个虚拟值。
我在 GitHub 中检查了关于有几个分支 - NOT NULL
和 Core
- 但这意味着整个 US-Customer
解决方案将被复制到 Core
分支但是当 US-Customer
分支发生变化时,它不会更新 Core
分支,即基本上必须维护两个存储库。
是否可以在 US-Customer
或 sql Data Tools
中进行此类定制,如果定制的解决方案(例如 GitHub
)只进行绝对必要的更改,而无需 {{1 }} 在 US-Customer
中抛出关于缺少表或任何其他错误的错误?
示例:
sql Data Tools
分支
Visual Studio
Core
分支
Person - Id,ZipCode
US-Customer
分支
ALTER TABLE Address ADD State CHAR(2) NOT NULL
解决方法
没有非常简单的实现方法。如果您希望以 SSDT 方式完全做到这一点,那么您需要创建多个项目:
- ProjectCore --> 将拥有所有共享对象。它不应该引用以下项目;
- ProjectUS --> 将拥有美国的所有对象并将
ProjectCore
引用为The same database
; - ProjectEU --> 将拥有 EU 的所有对象并将
ProjectCore
引用为The same database
。
ProjectUS
和 ProjectEU
都有自己的发布配置文件。您将在那里放置不同对象的完整定义,而不仅仅是 ALTER 语句。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。