0

我有一个 Visual Studio 数据库项目,我需要向指向该新表的现有表/列添加一个新表和一个外键。我们已经有了数据,我不想丢失它。

我有一个独立的表(名为 Records),其中一个字段是 statusID。这映射到我们代码中的枚举,因此在直接查询数据库时它提供的价值很小。

我创建了一个名为 AllStatuses 的新表。主键是 statusID,值与我的枚举相同。它还具有文本值(与我的枚举匹配)和其他一些属性。

接下来,我将外键约束添加到引用我的新 AllStatues 表的 Records 表中。

在部署期间,将创建新表。然后它会在创建 FK 时抛出错误,因为 AllStatues 还没有数据。

我在部署后向 AllStatues 添加数据,但为时已晚。我无法在预部署中添加它,因为该表不存在。

我正在尝试找到一种适当的方法来处理这个问题。我可以通过将 Records 表数据移动到临时表并在 preDeployment 脚本中截断来解决问题。添加数据后,然后将数据移回 postDeployment 中。我不喜欢这样,因为它会在每次部署时发生——在需要它很久之后。

4

1 回答 1

0

创建外键时,您可以创建“WITH NOCHECK”。这将在创建外键时防止违规。在您的部署后插入值。然后最后一步是使用“WITH CHECK CHECK CONSTRAINT”强制执行约束。我使用 SSDT 的数据库项目将此作为发布过程的一部分。

于 2015-07-15T18:38:28.000 回答