VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 600|回复: 3

一个关于Dataset的疑问。希望高手给予解答!谢谢。

[复制链接]

2

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-2-10 22:30:01 | 显示全部楼层 |阅读模式
有两个表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中动态的加入一列,在保存的时候不因为列数的不同而出错。谢谢。如果我没有说明白。请问。我在线等 !!
回复

使用道具 举报

0

主题

26

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-4-6 20:45:01 | 显示全部楼层
将数据层中的save方法定义为虚拟的,定义一个B表类型继承自A表类型,override A表类型的save方法以便适合B表的数据类型
A a = new B();
.....
a.save();
回复

使用道具 举报

0

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-4-9 13:45:01 | 显示全部楼层
沿用原来的模式肯定是不能满足你的要求的。
你用的模式中肯定有一个通用的方式,也就是你说的普通Dataset方式,你可以使用这个接口来实现数据更新,不考虑B表的结构。

当然也有些其它的方式,模式是用来规划编码的,但如果到了阻碍编码的地步就要重构模式了。
回复

使用道具 举报

2

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-4-11 19:00:01 | 显示全部楼层
看来也只能和头商量一下了。
但是还有一个疑问。我如果用普通的dataset方式。正常方法是
建立一个普通的datasetB,然后把A的数据添加到datasetB中,然后save到B表里
。我可以不建立datasetB,直接把修改后datasetA更新到B里么。是不是要改变行的状态。写了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表