例如:
有一个员工工资表emp_salary
emp_id(员工编号)  salary(薪水)
0001                 3000
0002                 3400员工资料表 employee
emp_id      emp_name(员工名称)
0001        张大海
0002        高大山因为查询时总想带出员工的名称,所以,将数据源设置为:
select emp_salary.emp_id, employee.emp_name, emp_salary.salary
from  emp_salary inner join employee 
      on emp_salary.emp_id = employee.emp_id我是希望通过定义的次dataAdpter生成dataset,然后dataset连到dataGrid,dataGrid内容更新后,反映到dataSet,然后调用dataAdapter的方法提交,但是由于此处的数据源是从两个表里连接得到的,dataAdapter的InsertCommand、UpdateCommand、DeleteCommand无法自动生成了,所以,就无法通过自动生成的代码提交了,如果手工写会很麻烦,因为有的表的字段非常的多,比如说100个!我连接的目的是取相关的员工姓名,这个例子是简化的,真实数据可能是极为复杂的,比如销售订单,需要连接获取客户名称、仓库名称、业务员名称、运输公司名称等等。我想要的是:1,能通过连接获取我想要的相关的信息,2,希望能象操作单表那样方便的通过dataAdapter方便的提交dataSet中的数据。想听听大家对这种情况如何处理?

解决方案 »

  1.   

    1.没看懂什么意思。
    2.通过dataAdapter方便的提交dataSet几乎不可能实现,重新你重写dataAdapter。
    可以通过insert into table1 value(@col,...),insert into table2 value(@col,...)
    将两个sql放入一个事务中执行,如果觉得麻烦可以自己作个代码生成的小程序,一劳永逸。
      

  2.   


     你是说调用dataAdapter的Update方法吧?
     如果是这样,那是多表连接的数据源,就不会自动生成,一定要在代码中构造更新语句...
      

  3.   

    看看这个:http://blog.csdn.net/langmafeng/archive/2004/07/02/32287.aspx
      

  4.   

    你所需要的解决方法与我们公司一位项目经理提出来的方式差不多是一样的,他写了一个dll,我们通过调这个dll能够很容易的实现相关查询,修改等操作,那个dll主要用到了的是ADO.NET,因为具体代码不能够提供给你,所以可以告诉你的是更新的内容对于一条记录来说,你不要管现在的是否所有属性列都修改过,只要把datagrid得数据覆盖此记录即可;另外,你说的字段很多的问题,我们的解决方案是读取此表的oracle系统表,从系统表中得到此表的结构,然后取出数据到哈希表,以哈希表为数据源DataBind(),修改数据后再重新写回到哈希表,然后直接写入数据库,这样子免去了手工写代码的工作。在效率上测试过,是很快的,几乎感觉不出等待的时间。
    总之一点,你的想法是可以实现的,加油~
      

  5.   

    比如:我操作订单,我需要客户名称的资料、仓库的资料等等,订单中存储的是客户编号、仓库编号,更新是只需更新订单中的客户编号和仓库编号,但是查询的时候需要看到客户名称和仓库名称!在dataAdpater中一般都是从一张表中选取数据的,所以它可以insert,update,delete,但是如果是从两张表中连接取数的话,insert,update,delete就要手工处理了,但是,我不希望手工来处理,因为有的表字段太多了,想保留dataAdapter来自动生成这些东西。其实我知道,可以把相关的表中的数据都放到通过操作单表的dataAdapter放到dataset里面,dataset的table与database的table一一对应,然后在dataset中通过dataRelation处理,来获取相关的数据。回复人: CMIC(大象) ( ) 信誉:128  2004-07-20 10:39:00  得分: 0  
     
     
       1.没看懂什么意思。
    2.通过dataAdapter方便的提交dataSet几乎不可能实现,重新你重写dataAdapter。
    可以通过insert into table1 value(@col,...),insert into table2 value(@col,...)
    将两个sql放入一个事务中执行,如果觉得麻烦可以自己作个代码生成的小程序,一劳永逸。
      
     
      

  6.   


    你说的方法好像还是挺复杂的,我想尽可能使通过.net自己提供的方法和方案来解决。
    回复人: LagUagE(鬼语者) ( ) 信誉:100