用强类型化的dataset,感觉直观,不需要编写很多代码,但是有一个严重的问题就是:
背景:C#2.0,VS2005,开发中基础数据表的查询,插入,更新,删除,全部用存储过程。然后用数据源配置向导选择表的查询存储过程,这时在数据集设计器中就增加了一个表,这时再指定此表的插入,更新,删除用到的存储过程,然后再增加此表与其他表的关系。
问题1描述:
在第一次通过向导走完上面的全部过程后,在winform中使用,没问题,包括关系,都正常。
但在我修改了基础数据库表结构后(修改了表中的列名,或增加、减少基础数据库表的列等)我在存储过程中也全部更新了,但通过向导重新选这个表的存储过程后,在数据集设计器中,可以看到,表结构和数据库中的结构一样了,但在winform中要用到新增加的列时(如datagridview),winform中这个表的bindingSource中没有新增的列。除非用手工用代码(bindingSource-新增的列)强行指定。为什么VS中的数据集设计器里已经是更改后的表结构了,为什么在winform中的数据源却不同步。问题2描述:
上面的问题出现后,没有办法,我将表从数据集设计器中删除(强类型化dataset),然后,从走一边背景中提到的过程,再新建一个winform,这时再试,发现,还是同样的问题,form中的数据源没有新增的列,另外还有一个问题,就是我从新指定的与其他表的关系,也不能用了,在一个form中用到两个datagridview,一个是这个问题表,一个是另外一个表,有时是不显示关系名(在指定datagridview的数据源时,datasource=问题表,datamember=关系名,这里看不到关系名)有时是显示却没有效果关系的效果。请问如何能在修改了基础数据库中的表结构后,在项目中的数据集中能同步表结构和重新指定关系后关系的使用?
非常感谢,很急!

解决方案 »

  1.   

    检查xsd文件内容手工修改。。
    按理是会同步的
    如果你的dataset和winform的项目是分开的2个项目,要先编译dataset项目,winform才会更新
      

  2.   

    datagridview绑定的数据源没有刷新?你是在设计状态下绑定的,还是在代码中绑定?
      

  3.   


    同一个解决方案的同一个项目么?还是2个项目?
    先试试重新编译不管是同一个项目还是2个项目。。另外,有时候datagridview的代码是在第一次绑定时生成的,你可以试下重新加一个datagridview再绑定
    最后,vs2005有没打sp1?如果没有。。打上。。