我有一个SagaData类,它有很多冗余属性,我想在下一个版本中删除它们。然而,目前正在生产的Sagas正在进行生产,我不确定在SagaData类上删除这些属性会对现有的Sagas产生什么影响。
Afaik NServiceBus处理为我们创建数据库表,其中一个表将所有冗余属性作为列。任何人都可以指出我在学习如果从SagaData类中删除这些属性会发生什么的方向。假设未使用属性,仅填充属性并相应地重构代码。 - 我想知道我们的数据库会发生什么,以及现有的Sagas会发生什么?
由于
答案 0 :(得分:1)
NHibernate仅在通过NServiceBus NHibernate安装程序(.EnableInstallers()
)运行NH模式生成器时才进行模式添加。 NHibernate不执行模式迁移,如列类型更改,列重命名和列删除。这是NHibernate的限制,而不是NServiceBus。
打破架构更改都需要手动编写脚本。您可以使用工具运行手动创建的脚本RoundhousE或许多其他类似工具。您还可以使用Microsoft数据库部署项目(SSDT)等工具来区分数据库,该工具可以为您创建这些脚本。
如果你有一个新的传奇,你可以等到所有旧的传奇完成后,@ hadi提到,你甚至可以在未使用时删除那张旧桌子。
如果您修改现有的saga,这意味着您的实现将不再使用这些列,也适用于现有的saga实例。部署新版本后,您可以安全地从表中删除这些列。
答案 1 :(得分:0)
我认为您的数据库不会发生任何事情。您必须通过迁移删除冗余列。 NServiceBus不会为你做那件事。
您可以将新版本的端点部署到生产环境中,让旧的/现有的sagas随着时间的推移完成,然后停用旧的端点并删除不必要的列。
查看详细解释saga迁移的示例{。{3}}。