首页 > 解决方案 > NserviceBus - 从 SagaData 实体中删除属性

问题描述

我有一个 SagaData 类,它有很多冗余属性,我想在我们的下一个版本中删除它们。但是,现在生产中正在进行的 Sagas 活动,我不确定删除 SagaData 类上的这些属性会对已经存在的 Sagas 产生什么影响。

Afaik NServiceBus 为我们处理创建数据库表,其中一个具有所有这些冗余属性作为列。谁能指出我学习如果从 SagaData 类中删除这些属性会发生什么的方向。假设没有使用属性,只填充和代码将被相应地重构。- 我想知道我们的数据库会发生什么,现有的 Sagas 会发生什么

谢谢

标签: nservicebus

解决方案


NHibernate 架构更新

NHibernate 仅在通过 NServiceBus NHibernate 安装程序 ( ) 运行 NH 模式生成器时才添加模式.EnableInstallers()。NHibernate 不进行模式迁移,如列类型更改、列重命名和列删除。这是 NHibernate 的限制,而不是 NServiceBus 的限制。

脚本 SQL

破坏性架构更改都需要手动编写脚本。您可以使用一个工具来运行您手动创建的脚本RoundhouseE或许多其他类似的工具。您还可以使用 Microsoft 数据库部署项目 (SSDT) 等工具来区分数据库,该工具可以为您创建这些脚本。

删除列

如果你有一个新的 saga,你可以等到所有旧的 sagas 完成,正如@hadi 提到的那样,你甚至可以在未使用时删除那个旧表。

修改现有的 saga

如果您修改现有的 saga,这意味着您的实现将不再使用这些列,对于现有的 saga 实例也是如此。部署新版本后,您可以安全地从表中删除这些列。


推荐阅读