级联更新没有问题,级联删除却特别的慢,慢得惊人,我困惑了...

zhw2ll 2008-01-02 02:02:17
...
iDataSet.MyClass.Rows[myClassBindingSource.Position].Delete();////????慢慢慢

myClassTableAdapter.Update(iDataSet.MyClass);
iDataSet.MyClass.AcceptChanges();
...

在sqlserver数据库中,有UserInfo用户表[700多条记录],MyClass表;
MyClass是一个自定义类别表,其中的MyClassName是唯一索引;
Myclass表的MyClass字段如下:
MyClassName
-------------
退休
离休
============================
在数据库上,MyClass表和UserInfo表的MyClassName存在约束关系[级联更新和删除],MyClass表为主表,UserInfo表为从表;

iDataSet是个强类型的DataSet,其中包括UserInfo表和MyClass表,并且在iDataSet上存在约束关系:
关系和外键约束,更新和删除规则均是cascade,接收/拒绝规则为none;

更新MyClass表中的字段MyClassName '退休'->'退休123',本地iDataSet.UserInfo表有关联记录700条被更新,数据库也同时更新成功,没有发现任何问题,且速度很快。
部分代码如下:
...

iDataSet.MyClass.Rows[myClassBindingSource.Position].EndEdit();

myClassTableAdapter.Update(iDataSet.MyClass);
iDataSet.MyClass.AcceptChanges();

...

但是:
删除MyClass表中的'退休'这笔记录,部分代码如下:
...
iDataSet.MyClass.Rows[myClassBindingSource.Position].Delete();////????慢慢慢 卡在这里了....

myClassTableAdapter.Update(iDataSet.MyClass);
iDataSet.MyClass.AcceptChanges();
...

发现卡在下面这里了,
iDataSet.MyClass.Rows[myClassBindingSource.Position].Delete();
找了很久,试了很久都找不到原因,非常郁闷。


我在数据库中删除myclass表中的'退休'这条记录,userinfo表的关联记录700多条瞬间就级联删除掉了。
困惑啊我。。。。。

请高手给我支招啊,我太苦闷了.....
解决问题者,我另外加50分。。。。
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhw2ll 2008-01-02
  • 打赏
  • 举报
回复
高手快来啊,我这火烧眉毛了。。。。
zhw2ll 2008-01-02
  • 打赏
  • 举报
回复
我看了你的这篇文章,可还是不知道如何解决我的问题。不过还是谢谢你了。。。
我不懂电脑 2008-01-02
  • 打赏
  • 举报
回复
http://wz.csdn.net/url/716708/
zhw2ll 2008-01-02
  • 打赏
  • 举报
回复
在sqlserver数据库中,有UserInfo用户表[700多条记录],MyClass表;
MyClass是一个自定义类别表,其中有MyClassName字段是唯一索引键;
Myclass表的MyClassName字段如下:
MyClassName
-------------
退休
离休
============================ 就两条记录;

在数据库上,MyClass表和UserInfo表的MyClassName存在约束关系[级联更新和删除],MyClass表为主表,UserInfo表为从表;其中userinfo表的myclassname为退休的记录有700条;

iDataSet是个强类型的DataSet,其中包括UserInfo表和MyClass表,并且在iDataSet上存在约束关系:
关系和外键约束,更新和删除规则均是cascade,接收/拒绝规则为none;

更新MyClass表中的字段MyClassName,即:
'退休'-> '退休123'
本地iDataSet.UserInfo表有关联记录700条被更新,数据库也同时更新成功,没有发现任何问题,且速度很快。
部分代码如下:
...
iDataSet.MyClass.Rows[myClassBindingSource.Position].EndEdit();

myClassTableAdapter.Update(iDataSet.MyClass);
iDataSet.MyClass.AcceptChanges();
...

但如果是:
删除MyClass表中的'退休'这笔记录,部分代码如下:
...
iDataSet.MyClass.Rows[myClassBindingSource.Position].Delete();////????慢慢慢 卡在这里了....

myClassTableAdapter.Update(iDataSet.MyClass);
iDataSet.MyClass.AcceptChanges();
...

发现卡在下面这里了,
iDataSet.MyClass.Rows[myClassBindingSource.Position].Delete();
找了很久,试了很久都找不到原因,非常郁闷。


我在数据库中删除myclass表中的'退休'这条记录,userinfo表的关联记录700条瞬间就级联删除掉了。

反复测试中,我发现:如果我把iDataSet中UserInfo与MyClass表之间的“级联关系”删除掉,那么运行程序,再删除MyClass表的'退休'这笔记录,就会看到MyClass表的记录被删除了,数据库中MyClass表和UserInfo表也级联删除了那700条记录。
可是本地iDataSet中的UserInfo表就没法离线级联更新了。
这样,我发现问题存在与iDataSet的这个关系中,但这个关系中级联更新为何不存在问题,二级联删除就会有问题呢?

这就是我困惑的地方。
zhw2ll 2008-01-02
  • 打赏
  • 举报
回复
还是自力更生的好啊 俺自己找到问题了 呵呵....

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧