2016-09-23 57 views
1

考虑这个模拟场景中,我有以下类:如何更新ReliableDictionary中的模型?

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

我现在有一个ReliableDictionary(GUID,人)。我想通过拆分出来的地址更改我的人模型,以下几点:

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,一个人员和一个地址。

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

谢谢!

+0

这是一篇很重要的文章:https://azure.microsoft.com/en-us/documentation/articles/service-fabric-work-with-reliable-collections/ – LoekD

回答

2

一个重要的要求是您的模型需要向后兼容。存储的模型应该能够加载,而不管模型的变化如何。

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

你也可以做'这个'飞行'。无论何时在生产过程中加载模型,都要检查版本号(您需要在模型上指定版本字段)。如果版本低于特定值,请将其转换。