如何更新 ReliableDictionary 中的模型?
How do I update a model in a ReliableDictionary?
考虑这个模拟场景,其中我有以下 class:
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,一个用于人员,一个用于地址。
在升级期间拆分这些实体并迁移数据的正确方法是什么?感觉以前有这方面的文档,现在找不到了
谢谢!
一个重要的要求是您的模型需要向后兼容。无论您的模型发生什么变化,存储的模型都应该能够加载。
转换所有存储的模型需要您循环存储的模型,进行更改并再次存储。您需要为此编写特定的代码。这可以包含在微服务中,或者您可以创建一个临时微服务来调用保存数据的微服务。转换完成后,您可以删除代码或微服务。
您也可以这样做 'on the fly'。每当在生产过程中加载模型时,您都会检查版本号(您需要在模型上指定一个版本字段)。如果版本低于某个值,则转换它。
考虑这个模拟场景,其中我有以下 class:
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,一个用于人员,一个用于地址。
在升级期间拆分这些实体并迁移数据的正确方法是什么?感觉以前有这方面的文档,现在找不到了
谢谢!
一个重要的要求是您的模型需要向后兼容。无论您的模型发生什么变化,存储的模型都应该能够加载。
转换所有存储的模型需要您循环存储的模型,进行更改并再次存储。您需要为此编写特定的代码。这可以包含在微服务中,或者您可以创建一个临时微服务来调用保存数据的微服务。转换完成后,您可以删除代码或微服务。
您也可以这样做 'on the fly'。每当在生产过程中加载模型时,您都会检查版本号(您需要在模型上指定一个版本字段)。如果版本低于某个值,则转换它。