none
Обновление DataSet после прямого добавления записей в связанную таблицу RRS feed

  • Вопрос

  • Выполняю insert через ExecuteNonQuery(). В базе (Access в моём случае) новые данные появляются. Но я не могу их увидеть в своём DataSet, привязанном к этой таблице:
    daysCategoriesTableAdapter.Fill(databaseDataSet.DaysCategories);
    Такой код не обновляет данные. Кол-во записей остаётся прежним.
    Единственный выход я нашёл в пересоздании адаптера:
    daysCategoriesTableAdapter = new DaysCategoriesTableAdapter();
    daysCategoriesTableAdapter.Fill(databaseDataSet.DaysCategories);
    
    Есть ли более правильный способ решения моей задачи?


    9 февраля 2013 г. 9:33

Ответы

  • А, тогда может так:

    dataSet.Clear();
    dataAdapter.Fill(dataSet);


    Да, так работает. Более того, заработал мой изначальный вариант
    daysCategoriesTableAdapter.Fill(databaseDataSet.DaysCategories);
    Ума не приложу почему раньше не работало. Решение тогда я точно пересобирал. Только перезагрузка компа что-ли помогла)
    В любом случае, спасибо за участие!


    • Помечено в качестве ответа Arteny 11 февраля 2013 г. 9:19
    • Изменено Arteny 11 февраля 2013 г. 9:20 забыл поблагодарить
    11 февраля 2013 г. 9:17

Все ответы

  • Он и не должен обновлять, он заполняет его в первый раз. Используйте метод

    daysCategoriesTableAdapter.Update(databaseDataSet);

    подробности тут.

    9 февраля 2013 г. 10:32
    Модератор
  • Он и не должен обновлять, он заполняет его в первый раз. Используйте метод

    daysCategoriesTableAdapter.Update(databaseDataSet);

    подробности тут.


    Нет, я пробывал Update. Это не то. Update выполняет обратную операцию - приводит БД в соответствие с обновлённым содержанием DataSet, мне же необходимо наоборот- провести обновление DataSet, чтобы он отражал текущее состояние БД.
    11 февраля 2013 г. 8:41
  • А, тогда может так:

    dataSet.Clear();
    dataAdapter.Fill(dataSet);

    • Предложено в качестве ответа YatajgaModerator 11 февраля 2013 г. 9:23
    11 февраля 2013 г. 8:50
    Модератор
  • А, тогда может так:

    dataSet.Clear();
    dataAdapter.Fill(dataSet);


    Да, так работает. Более того, заработал мой изначальный вариант
    daysCategoriesTableAdapter.Fill(databaseDataSet.DaysCategories);
    Ума не приложу почему раньше не работало. Решение тогда я точно пересобирал. Только перезагрузка компа что-ли помогла)
    В любом случае, спасибо за участие!


    • Помечено в качестве ответа Arteny 11 февраля 2013 г. 9:19
    • Изменено Arteny 11 февраля 2013 г. 9:20 забыл поблагодарить
    11 февраля 2013 г. 9:17