NserviceBus - 从 SagaData 实体中删除属性
NserviceBus - Removing properties from SagaData entities
我有一个 SagaData class,它有很多多余的属性,我想在下一个版本中删除这些属性。然而,目前生产环境中有正在进行的 Sagas 活动,我不确定在 SagaData class 上删除这些属性会对已经存在的 Sagas 产生什么影响。
Afaik NServiceBus 负责为我们创建数据库表,其中一个表将所有这些冗余属性作为列。谁能指出我学习如果从 SagaData class 中删除这些属性会发生什么的方向。假设这些属性未被使用,仅被填充并且代码将被相应地重构。 - 我想知道我们的数据库会发生什么,现有的 Sagas 会发生什么
谢谢
我认为您的数据库不会有任何问题。您必须通过迁移删除冗余列。 NServiceBus 不会为你做那件事。
您可以将新版本的端点部署到生产环境中,让 old/existing sagas 随着时间的推移完成,然后停用旧端点并删除不必要的列。
查看 here 详细解释 saga 迁移的示例。
NHibernate 架构更新
NHibernate 仅添加模式,并且仅当 NH 模式生成器是 运行 通过 NServiceBus NHibernate 安装程序 (.EnableInstallers()
) 时。 NHibernate 不执行模式迁移,如列类型更改、列重命名和列删除。这是 NHibernate 的限制,而不是 NServiceBus 的限制。
编写脚本SQL
中断架构更改都需要手动编写脚本。您可以使用工具 运行 您手动创建的脚本 RoundhousE 或许多其他类似工具。您还可以使用 Microsoft 数据库部署项目 (SSDT) 等工具来区分数据库,它可以为您创建这些脚本。
删除列
如果你有一个新的 saga,你可以像@hadi 提到的那样等到所有旧的 sagas 完成,你甚至可以在未使用时删除旧的 table。
修改现有的 saga
如果您修改现有的 saga,这意味着您的实现将不再使用这些列,对于现有的 saga 实例也是如此。部署新版本后,您可以安全地从 table(s) 中删除这些列。
我有一个 SagaData class,它有很多多余的属性,我想在下一个版本中删除这些属性。然而,目前生产环境中有正在进行的 Sagas 活动,我不确定在 SagaData class 上删除这些属性会对已经存在的 Sagas 产生什么影响。
Afaik NServiceBus 负责为我们创建数据库表,其中一个表将所有这些冗余属性作为列。谁能指出我学习如果从 SagaData class 中删除这些属性会发生什么的方向。假设这些属性未被使用,仅被填充并且代码将被相应地重构。 - 我想知道我们的数据库会发生什么,现有的 Sagas 会发生什么
谢谢
我认为您的数据库不会有任何问题。您必须通过迁移删除冗余列。 NServiceBus 不会为你做那件事。
您可以将新版本的端点部署到生产环境中,让 old/existing sagas 随着时间的推移完成,然后停用旧端点并删除不必要的列。
查看 here 详细解释 saga 迁移的示例。
NHibernate 架构更新
NHibernate 仅添加模式,并且仅当 NH 模式生成器是 运行 通过 NServiceBus NHibernate 安装程序 (.EnableInstallers()
) 时。 NHibernate 不执行模式迁移,如列类型更改、列重命名和列删除。这是 NHibernate 的限制,而不是 NServiceBus 的限制。
编写脚本SQL
中断架构更改都需要手动编写脚本。您可以使用工具 运行 您手动创建的脚本 RoundhousE 或许多其他类似工具。您还可以使用 Microsoft 数据库部署项目 (SSDT) 等工具来区分数据库,它可以为您创建这些脚本。
删除列
如果你有一个新的 saga,你可以像@hadi 提到的那样等到所有旧的 sagas 完成,你甚至可以在未使用时删除旧的 table。
修改现有的 saga
如果您修改现有的 saga,这意味着您的实现将不再使用这些列,对于现有的 saga 实例也是如此。部署新版本后,您可以安全地从 table(s) 中删除这些列。