.net dataadapter更新在错误的表上执行

时间:2011-05-05 10:06:12

标签: .net dataset dataadapter sqlcommandbuilder

我有一个带有2个数据表的类型化数据集,TableX和TableY。在设计师创作。没有TableAdapters。

当我填充TableX时,我运行SQL并从另一个表TableZ获取数据。 该表填满了记录,TableX.tableName是“TableX”。

但是当我使用datadapter和commandbuilder为TableX生成updatecommand时,它会尝试更新TableZ。我怎么能改变这个?

Oracle.DataAccess.Client.OracleDataAdapter da = new OracleDataAdapter("select * from " + table.TableName, this.Connection);
Oracle.DataAccess.Client.OracleCommandBuilder cb = new OracleCommandBuilder(da);
return cb.DataAdapter.Update(table);

此更新生成一个以“update TableZ ...”开头的SQL语句。应该是“更新TableX ......”。

我想这是因为填充数据表的方法运行一个sql语句,该语句从另一个表“select ....... from TableZ”获取数据,并在数据表模式中读取:

<?xml version="1.0" standalone="true"?>
<dsConsignmentReport xmlns="http://tempuri.org/dsConsignmentReport.xsd">
    <xs:schema xmlns="http://tempuri.org/dsConsignmentReport.xsd" elementFormDefault="qualified" ...."> 
        <xs:element msdata:EnforceConstraints="False" msdata:Locale="nb-NO" ...> 
        <xs:complexType> 
        <xs:choice maxOccurs="unbounded" minOccurs="0"> -<xs:element name="TABLEX" msprop:BaseTable.0="TABLEZ">

表示“baseTable”值为“TableZ”。 我怎样才能解决这个问题?我无法更改我的SQL语句来填充表。有什么办法可以让DataAdapter针对正确的表执行吗? (TableX的)

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 我在调用

之前在dataadapter中构建了CUD命令
return cb.DataAdapter.Update(table);

然后CUD命令将生成正确的。