Мастер наборов данных VS2008 не соответствует таблицам для обновления - PullRequest
1 голос
/ 15 января 2010

первый вопрос на этом сайте.

У меня были серьезные проблемы с использованием Visual Studio 2008, и я надеюсь, что кто-то уже понял это.

У меня есть 2 библиотеки и 1 проект, в которых используются строго типизированные наборы данных (бэкэнд MSSQL), которые я сгенерировал с помощью параметра «Настроить набор данных с помощью мастера» в Источниках данных. Некоторое время они работали нормально, и я написал много кода в не дизайнерском файле для классов строк. Я также указал множество пользовательских запросов с помощью конструктора наборов данных. Это все работа, которую я не могу позволить себе потерять.

Недавно я внес некоторые изменения в реорганизацию своих библиотек, в том числе изменение названий самих библиотек. Я также изменил строку подключения, чтобы она указывала на другую базу данных, которая является копией разработки (та же самая точная схема).

Проблема теперь, когда я открываю «Настроить набор данных с помощью мастера», чтобы выбрать новый столбец, добавленный в одну из таблиц, он больше не соответствует таблицам в мастере. Мастер отображает все таблицы в базе данных, и ни у одной из них нет флажков рядом с ними (т.е. они не являются частью этого набора данных). Ниже тех, что он показывает все таблицы снова, но с красными X, и они проверены. По сути, это означает, что Visual Studio видит все таблицы, которые в настоящее время имеются в DataSet, и видит все таблицы в базе данных, но считает, что они больше не совпадают и, следовательно, не совпадают!

У меня такое же событие случалось довольно давно, и я думаю, что я просто заново скомпилировал xsd и вручную скопировал код, а затем мне пришлось переопределить все пользовательские запросы, которые я создал в конструкторе наборов данных. Это не очень хорошее решение.

Я ищу 2 ответа: 1. Что вызывает это, и как предотвратить это. 2. Как это исправить, чтобы мастер снова поверил, что таблицы в его xsd - это те же таблицы, что и в базе данных (да, у них все еще точно такие же имена).

Спасибо.

1 Ответ

0 голосов
/ 08 мая 2010

Конструктор набора данных использует запрос по умолчанию (первый с проверкой на нем) для синхронизации схемы для каждой таблицы. Всякий раз, когда вы переходите к редактированию запроса по умолчанию, VS фактически подключается к вашему источнику данных и ищет изменения в запросе. Если добавлены новые столбцы, они будут отображаться как новые столбцы для добавления в таблицу. Переименованные столбцы отображаются как новые, поскольку VS не может узнать, что вы изменили имя.

Ответ 1. Файл XSD содержит имена таблиц базы данных, которые он использовал для первоначального создания таблицы. Если вы измените имя таблицы, дизайнер не будет знать, с какой таблицей нужно синхронизироваться.

Ответ 2. Вы можете редактировать XML внутри XSD-файла. Выполните «Найти и заменить» внутри XSD-файла, заменив старое имя таблицы новым именем таблицы. Убедитесь, что у вас есть резервная копия файла XSD, прежде чем сделать это. Будьте внимательны, изменяя только экземпляры старого имени таблицы, а не любой другой работающий XML.

...