Мастер наборов данных VS2008 не соответствует таблицам для обновления
Первый вопрос на этом сайте.
У меня была настоящая проблема с использованием Visual Studio 2008, и я надеюсь, что кто-то уже понял это.
У меня есть 2 библиотеки и 1 проект, которые используют строго типизированные наборы данных (бэкэнд MSSQL), которые я сгенерировал с помощью параметра "Настроить набор данных с помощью мастера" в Источниках данных. Некоторое время они работали нормально, и я написал много кода в не дизайнерском файле для классов строк. Я также указал множество пользовательских запросов, используя конструктор набора данных. Это все работа, которую я не могу позволить себе потерять.
Недавно я внес некоторые изменения в реорганизацию своих библиотек, в том числе изменение названий самих библиотек. Я также изменил строку подключения, чтобы она указывала на другую базу данных, которая является копией разработки (та же самая точная схема).
Проблема в том, что когда я открываю "Настроить набор данных с помощью мастера", чтобы выбрать новый столбец, который я добавил в одну из таблиц, он больше не соответствует таблицам в мастере. Мастер отображает все таблицы в базе данных, и ни у одной из них нет флажков рядом с ними (то есть: они не являются частью этого набора данных). Ниже тех, что он показывает все таблицы снова, но с красными X, и они проверены. По сути, это означает, что Visual Studio видит все таблицы, которые в настоящее время имеются в DataSet, и видит все таблицы в базе данных, но считает, что они больше не совпадают и, следовательно, не совпадают!
У меня было то же самое, что произошло довольно давно, и я думаю, что я просто заново скомпилировал xsd и вручную скопировал код, а затем мне пришлось переопределить все пользовательские запросы, которые я создал в конструкторе наборов данных. Это не очень хорошее решение.
Я ищу 2 ответа: 1. Что вызывает это, и как предотвратить это. 2. Как это исправить, чтобы мастер снова поверил, что таблицы в его xsd - это те же таблицы, что и в базе данных (да, у них все еще точно такие же имена).
Благодарю.
1 ответ
Дизайнер набора данных использует запрос по умолчанию (первый с проверкой на нем) для синхронизации схемы для каждой таблицы. Всякий раз, когда вы переходите к редактированию запроса по умолчанию, VS фактически подключается к вашему источнику данных и ищет изменения в запросе. Если добавляются новые столбцы, они будут отображаться как новые столбцы для добавления в таблицу. Переименованные столбцы отображаются как новые, поскольку VS не может узнать, что вы изменили имя.
Ответ 1. Файл XSD содержит имена таблиц базы данных, которые он использовал для первоначального создания таблицы. Если вы измените имя таблицы, дизайнер не будет знать, с какой таблицей нужно синхронизироваться.
Ответ 2. Вы можете редактировать XML внутри XSD-файла. Выполните "Найти и заменить" внутри XSD-файла, заменив старое имя таблицы новым именем таблицы. Убедитесь, что у вас есть резервная копия файла XSD, прежде чем сделать это. Будьте осторожны, чтобы изменить только экземпляры старого имени таблицы, а не любой другой работающий XML.