当前位置:编程学习 > C#/ASP.NET >>

系统如何实现跨数据版本接收?

原来的方式是系统版本和数据版本一一对应的.不可以跨版本接收数据.
现在想修改一下.没有太好的头绪,所以请教一下,看看大家有什么想法?
步骤1:系统(1.0版本)将数据库(1.0版本)中的若干数据组成DataSet,序列化为文件导出"文件A";
步骤2:系统升级到2.0,数据库升级到2.0.运行系统(2.0版本),选择"文件A"希望导入.

分析:
拥有DataSet(1.0版本),脚本(1.0版本到2.0版本).
需要DataSet(2.0版本).

不多说了,先谢谢看完的朋友. --------------------编程问答-------------------- 看情况吧
1.最主要的应该是数据库版本的改动,如果从1.0到2.0的改动都是新加(删除)一些表,新加(删除)一些列(可以为NULL),或者是列的取值范围扩大(比如从int变成bigint),那应该问题不大
2.看你怎么序列化的,如果是写成XML,那就更简单了

如果满足条件1,那么就可以:
a. DataSet ds = 用2.0的schema初始化
b. ds.LoadXML(fileA),我不太清楚别的序列化格式是不是也有类似的方法,如果没有的话,可以考虑先把fileA反序列化成ds1.0版本再WriteXML好了。。

如果不满足条件1,比如新加了一些不能为NULL的列,或者是加了一些1.0数据会出问题的约束之类的,你可能需要先定义一个和2.0类似的schema,但是去掉会出问题的约束,把数据load进来之后再想办法去解决这些问题,都ok了再倒入到2.0里面

最最差的情况,那就是这两个根本不兼容,1.0序列化的XML文件可能要完全写个方法去parse成2.0的row,一条一条加到2.0里面 --------------------编程问答--------------------
引用 1 楼 silwol 的回复:
看情况吧
1.最主要的应该是数据库版本的改动,如果从1.0到2.0的改动都是新加(删除)一些表,新加(删除)一些列(可以为NULL),或者是列的取值范围扩大(比如从int变成bigint),那应该问题不大
2.看你怎么序列化的,如果是写成XML,那就更简单了

如果满足条件1,那么就可以:
a. DataSet ds = 用2.0的schema初始化
b. ds.LoadXML(fileA),我不太清楚别的序列化格式是不是也有类似的方法,如果没有的话,可以考虑先把fileA反序列化成ds1.0版本再WriteXML好了。。

如果不满足条件1,比如新加了一些不能为NULL的列,或者是加了一些1.0数据会出问题的约束之类的,你可能需要先定义一个和2.0类似的schema,但是去掉会出问题的约束,把数据load进来之后再想办法去解决这些问题,都ok了再倒入到2.0里面

最最差的情况,那就是这两个根本不兼容,1.0序列化的XML文件可能要完全写个方法去parse成2.0的row,一条一条加到2.0里面

其实将这个问题提出来就是想一种通用的办法,毕竟在每个模块处理,每个版本处理是不现实的。
因为数据的升级我们是无法控制的,但是肯定是做到同时考虑到数据处理的,例如更新了某列,将其长度修改或非空,脚本是会同时处理其数据的。
这种情况下,应该算是复杂型的情况了。因此,直接读取xml文件是有局限性的。
我的设想是,将每个版本的数据升级脚本记录到数据库中,导出的文件也记录下版本信息。通过处理将文件数据进行数据升级。
最开始我的想法很幼稚,每次导入文件的时候如果需要数据升级,就构造一系列的表副本,通过表副本的方式进行脚本升级后再进行数据融合。但是这样越想越复杂,所以看看其他系统有没有类似的情况考虑,提供一个已应用的方式。 --------------------编程问答-------------------- 版本不同,楼主以为就是 1 和 2 的区别吗?想得也太简单了,
如果表结构有了变化,怎么可以导入导出呢? --------------------编程问答-------------------- 这要看具体的变化点吧 --------------------编程问答-------------------- 这样改起来可是无尽的啊。。。 --------------------编程问答-------------------- 我的想法是应该存在一套可行的方案吧.难道 没有 ? --------------------编程问答-------------------- 没解决方案前再顶一下。 --------------------编程问答-------------------- 这种可以考虑一下webservice啊 --------------------编程问答--------------------
引用 8 楼 Chinajiyong 的回复:
这种可以考虑一下webservice啊

webservice?请详述,谢谢。 --------------------编程问答-------------------- 没有好的方案吗?
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,