核心问题是如何正确执行数据升级,而应用程序版本在数据表示方面存在差异?例如。对于数据库,通常使用SQL脚本来修改持久化数据模型。我可以很容易地想象使用XSL for XML的类似方式等等。但我想以这种方式创建数据持久性模型的抽象,即升级方法不考虑存储数据的方式 - 只需读取以前的版本数据并保存新数据即可。
我尝试在C#中执行此类操作,例如通过反射加载包含数据定义类的前一版本的程序集,同时使用应用程序部署当前版本。这是一个非常复杂和棘手的解决方案。其他选项是使用基于版本的命名对象冗余地保留以前的模型类 - 这个解决方案更容易,因为它在编译时提供对类型的完全访问。
我提出这个问题的想法是,这种数据升级的正确解决方案是什么?