Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NserviceBus-从SagaData实体中删除属性_Nservicebus - Fatal编程技术网

NserviceBus-从SagaData实体中删除属性

NserviceBus-从SagaData实体中删除属性,nservicebus,Nservicebus,我有一个SagaData类,它有很多冗余属性,我想在下一个版本中删除这些属性。然而,目前正在进行的传奇正在制作中,我不确定移除这些属性对SagaData类将对已经存在的传奇产生什么影响 Afaik NServiceBus负责为我们创建db表,其中一个表的所有冗余属性都是列。有谁能告诉我,如果从SagaData类中删除这些属性,将会发生什么。假设这些属性没有被使用,只会被填充,代码将被相应地重构。-我想知道我们的db会发生什么,现有的传奇会发生什么 谢谢我认为你的数据库不会发生任何事情。您必须通过

我有一个SagaData类,它有很多冗余属性,我想在下一个版本中删除这些属性。然而,目前正在进行的传奇正在制作中,我不确定移除这些属性对SagaData类将对已经存在的传奇产生什么影响

Afaik NServiceBus负责为我们创建db表,其中一个表的所有冗余属性都是列。有谁能告诉我,如果从SagaData类中删除这些属性,将会发生什么。假设这些属性没有被使用,只会被填充,代码将被相应地重构。-我想知道我们的db会发生什么,现有的传奇会发生什么


谢谢

我认为你的数据库不会发生任何事情。您必须通过迁移删除冗余列。NServiceBus不会为你这么做的

您可以将新版本的端点部署到生产环境中,让旧的/现有的saga随着时间的推移而完成,然后解除旧端点的使用并删除不必要的列

查看详细解释saga迁移的示例。

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

脚本SQL 中断架构更改都需要手动编写脚本。您可以使用工具运行手动创建的脚本或许多其他类似工具。您还可以使用诸如Microsoft Database Deployment Projects(SSDT)之类的工具来区分数据库,该工具可以为您创建这些脚本

删除列 如果你有一个新的传奇,你可以等到@hadi提到的所有旧传奇都完成了,你甚至可以在没有使用的时候移除旧表

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

您能否添加有关持久器和您正在使用的持久器版本的信息,以便我们更好地帮助您?根据您的描述,我假设它是NHibernate持久化程序,但我想再次检查是的,它是NHibernate,版本是4.0.1和NServiceBus版本5.2.14-可能是升级的时候了。我不确定您为什么要共享迁移示例,这就是如何在不停机的情况下迁移到不同的持久性。重点是要表明,这可以通过“版本化”传奇并稍后删除表来实现。