有两个表A和B(用户不同),其中B表比A表多了一列,其余的列全部一样。
现在我要实现这样一个操作,就是把A表的数据添加到B表中。思路:(前提:已经存在一个dsA.xsd(dataset文件)但没有dsB.xsd)
1.把A表数据全部取出,放入datasetA中。
2.向datasetA中添加一列,给这一列写入值,得到一个修改后的datasetA。
3.建立一个B的datasetB,把datasetA的数据加入到datasetB中
4.保存datasetB,更新数据库完毕。但是出现了问题.因为这个项目中,对一个库表进行更新,需要调用数据层中的一个save方法,例如我要更新A表,我就需要调用A对应的数据层文件中的save方法,传入datasetA,类型是dsA。然后根据用户的不同进行更新。
因类似的表极多,所以要求B类表使用A类表的数据访问层(B类表除了保存A表信息外没有其他操作)
由于save方法的入参类型是如dsA(dsA.xsd)这种特定的类型,而不是普通的dataset,dsA中表的结构已经确定,比B少了一列,而B又没有数据层。所以我要调用A的save方法去保存B就不行了。我想问问,在这种情况下可以进行保存么?有没有办法使dsA中动态的加入一列,在保存的时候不因为列数的不同而出错。谢谢。如果我没有说明白。请问。我在线等 !!

解决方案 »

  1.   

    将数据层中的save方法定义为虚拟的,定义一个B表类型继承自A表类型,override A表类型的save方法以便适合B表的数据类型
    A a = new B();
    .....
    a.save();
      

  2.   

    沿用原来的模式肯定是不能满足你的要求的。
    你用的模式中肯定有一个通用的方式,也就是你说的普通Dataset方式,你可以使用这个接口来实现数据更新,不考虑B表的结构。当然也有些其它的方式,模式是用来规划编码的,但如果到了阻碍编码的地步就要重构模式了。
      

  3.   

    看来也只能和头商量一下了。
    但是还有一个疑问。我如果用普通的dataset方式。正常方法是
    建立一个普通的datasetB,然后把A的数据添加到datasetB中,然后save到B表里
    。我可以不建立datasetB,直接把修改后datasetA更新到B里么。是不是要改变行的状态。写了