none
Проблема с DataSet со строгим контролем типов

    Вопрос

  • долгое время программа работала с DataSet со строгим контролем типов и не было проблем, теперь возникла необходимость добавить в одну из таблиц новое поле, после этого возникла проблема с методом Fill, выводится такое сообщение:

    в котором говорится, что минимум один обязательный параметр не получает значение. Но во-первых в запросе не используются параметы, код генерирует VS 2010 и как проследить передачу параметров, если дебаггер не заходит в вызов сгенерированного метода Fill? Вот в этой строке происходит исключение

    Me.DichtungstypenTableAdapter.Fill(Me.CustomerWerkstoffdatenbankDataSet.Dichtungstypen)

    6 октября 2017 г. 14:11

Все ответы

  • Добрый день.

    Убедитесь, что таблица в БД и в вашем типизированном DataSet совпадает по списку полей, признаков их обязательности и типам данных. Скорее всего проблема в этом.

    10 октября 2017 г. 7:24
    Отвечающий
  • там все сопадает, я вначале пытался добавить поле в таблицу, которая была в DataSet, но там возникли проблемы с Update, Delete, Insert методами, хотя они мне не нужны я не обновляю данные в этой таблице, а только читаю оттуда. Поэтому я удалил таблицу в DataSet и создал адаптер заново, с полями которыми мне нужны, то есть со всеми полями. И использую только запрос Select, без каких либо параметров. А при попытки заполнить эту таблицу, выскакивает эта ошибка, только я не могу проверить что там не так, так как не могу зайти в отладчике в код, которые сгенерировала студия.
    10 октября 2017 г. 7:33
  • А создать адаптер из кода не пробовали? Указав явно команду для выборки данных?
    10 октября 2017 г. 7:41
    Отвечающий
  • там довольно сложная схема базы данных с несколькими таблицами, которые имеют связи между собой, изначально была реализована с DataSet со строгим контролем типов, если не найду решения то придется реализовывать адатер для этой таблицы в коде, вот только она имеет связь с другой таблицей в DataSet и данные должны синхронизироваться, при выборке.
    10 октября 2017 г. 8:01
  • А со связями никаких проблем нет, все идентично базе данных? Ну и если откатиться к изменениям которые были до всех правок, таблица данными кроме добавленного столбца заполняется? Или тоже падает с ошибкой?
    10 октября 2017 г. 8:09
    Отвечающий
  • я перед внесением изменений сделал копию папок проекта, и изменения делал в этой копии, так что в базовой версии еще все работает, я не использую контроль версий.
    10 октября 2017 г. 8:51
  • Зря не пользуетесь :)

    Посмотрите какие файлы у вас поменялись, вы же winforms приложение используете? Там где эти адаптеры создаются, может какой файл по умолчанию в студии не показываемый есть. Попробуйте сравнить старую и новую версию. В чем разница, в чем то разница ведь есть...

    10 октября 2017 г. 9:10
    Отвечающий
  • Можно конечно сравнить, вот только вносить изменения в эти скрытые файлы не рекомендуется потому что, только "богам" из microsoft известе принцип на основании чего, изменяется код в этих файлах.
    10 октября 2017 г. 9:25
  • Я не предлагаю вносить правки, я предлагаю сравнить, скорее всего проблема в чем то незначительном. Как только станет понятно в чем, это можно будет поправить через дизайнер.
    10 октября 2017 г. 9:38
    Отвечающий
  • Вчера сравнивал два файла старый и новый, в них почти по 9000 строк кода, когда VS переставляет блоки кода в разные места не простая задача, но тем не менее так и не нашел, где возможно лежит проблема, сегодня решил снова удалить таблицу (адаптер) из DataSet и создать его снова, но только со всеми методами Select. Update, Delete, Insert и... заработало, покрайней мере даные читаются, буду тестировать дальше.
    12 октября 2017 г. 7:34