如何更新ReliableDictionary中的模型?

时间:2016-09-23 23:10:46

标签: azure-service-fabric

考虑这个模拟场景,我有以下类:

public class Person {
  public Guid Id {get;set;}
  public string Name {get;set;}
  public Address Address {get;set;}
}

我目前有一个ReliableDictionary(Guid,Person)。我想通过拆分地址来改变我的Person模型,如下所示:

public class Person {
  public Guid Id {get;set;}
  public string Name {get;set;}
}

public class Address {
  public Guid Id {get;set;}
  public string Street {get;set;}
  ...
}

然后我会有两个ReliableDictionaries,一个用于人,一个用于地址。

在升级过程中拆分这些实体并迁移数据的正确方法是什么?我觉得以前有关于此的文档,但我再也找不到了。

谢谢!

1 个答案:

答案 0 :(得分:2)

一个重要的要求是您的模型需要向后兼容。无论模型发生什么变化,存储的模型都应该能够加载。

转换所有存储的模型需要您遍历存储的模型,进行更改并再次存储它们。您需要为此编写特定代码。这可以包含在微服务中,或者你可以创建一个临时微服务,它调用保存数据的微服务。转换完成后,您可以删除代码或微服务。

您也可以“动态”执行此操作。无论何时在生产期间加载模型,您都要检查版本号(您需要在模型上指定版本字段)。如果版本低于某个值,请转换它。