Обновление .net dataadapter выполняется на неверной таблице - PullRequest
0 голосов
/ 05 мая 2011

У меня есть типизированный набор данных с 2 таблицами данных, TableX и TableY. Создано в дизайнере. Нет адаптеров таблиц.

Когда я заполняю TableX, я запускаю SQL и извлекаю данные из другой таблицы, TableZ. Таблица заполняется записями, а TableX.tableName равно «TableX».

Но когда я использую datadapter и commandbuilder для генерации команды update для TableX, он вместо этого пытается обновить 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);

При обновлении генерируется инструкция SQL, которая начинается с «update TableZ ...». Это должно было быть «Update 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 голосов
/ 09 мая 2011

Я нашел решение.Я собрал команды CUD в адаптере данных ПЕРЕД вызовом

return cb.DataAdapter.Update(table);

Тогда команды CUD будут генерироваться правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...