我有一个带有 2 个数据表 TableX 和 TableY 的类型化数据集。在设计师中创建。没有表适配器。
当我填充 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 对正确的表执行吗?(表 X)