Обновление строки подключения набора данных .Net запускает изменение типов возвращаемых запросов

#c# #.net #vb.net #visual-studio

Вопрос:

У меня есть проект .Net Framework 4.7.2 с поддержкой обмена данными с DataSet базами данных. Я изменил строку подключения в окне свойств конструктора. Набор данных содержит несколько таблиц/адаптеров таблиц, и адаптеры таблиц иногда содержат запросы. Некоторые запросы возвращают одно значение и имеют, например integer? , тип возвращаемого значения. Когда я изменил строку подключения, VS изменил все эти типы возвращаемых данных на object . Может ли кто-нибудь предположить причину такого поведения?

Комментарии:

1. и адаптеры таблиц иногда содержат запросы — я хотел бы знать, как вам удалось создать адаптер таблиц без запроса.. и что он вообще делает? Вы имели в виду «таблицы данных иногда имеют связанный с ними табличный адаптер» ?

2. VS изменил все эти типы возвращаемых данных на object. Может ли кто-нибудь предположить причину такого поведения? — да, он делает это, потому что это полная заноза в заднице; теперь вам, вероятно, придется просмотреть XML и изменить все атрибуты ScalarCallRetVal обратно в System.Int32. Я рекомендую использовать систему управления версиями (git), привязать к ней XSD, зафиксировать перед тем, как коснуться набора данных, а затем внести изменения — Git значительно упростит отмену, когда дизайнер вытащит это дерьмо. Это не значит, что я не испытываю к этому особой любви большую часть времени, но эта часть отвратительна..

3. @CaiusJard Моя ошибка, все таблицы имеют связанный адаптер, и я иногда добавлял запросы, помимо запросов Fill/ getData по умолчанию, которые возвращают одно значение. Да! Ты так прав, что это заноза в заднице. Может быть, мне следует переключиться с создания всего через графический интерфейс VS и создать набор данных с помощью кода, или у вас есть совет, что бы это упростить? Уже работает с версией git, так что я могу воспользоваться этим преимуществом. Но проблема, которую я вижу в этом решении, заключается в том, что я должен повторять этот шаг каждый раз, когда восстанавливаю файл «неправильно». И поэтому я хотел бы определить источник такого поведения.

4. Создано с помощью кода? Ух.. Вы видели, сколько кода он пишет? Я имею в виду … конечно, вы можете взять хорошую версию того, что там написано, и сохранить ее.. Если он будет продолжать делать это с вами, возможно, будет лучше просто использовать функцию частичного класса (или подкласса), чтобы предоставить свой собственный метод, который вызывает скаляр, получает шаткий объект и приводит его. Это только конец сгенерированного метода, который заканчивается тем, что возвращается объект, а не выполняется приведение, которое вы хотите. Я никогда не копался в этом так глубоко..

5. ..Хотя я признаю, что однажды написал инструмент на основе файловой системы, который отслеживал изменения в XSD и возвращался в любое время, когда он замечал ScalarCallRetVal="System.SomethingDecent -> > ScalarCallRetVal="System.Object . Это было несложно (буквальное редактирование текста, не разбирал и не переиздавал xml), я просто был так взбешен в то время тем, насколько глупо было то, что какое-то, по-видимому, несущественное изменение могло его спровоцировать. У него есть и другие недостатки, но этот раздражает больше всего