7 ответов:
есть три способа сохранить модель в синхронизации.
удалите измененные таблицы из конструктора и перетащите их обратно в область конструктора из Обозревателя баз данных. Я обнаружил, что для того, чтобы это работало надежно, вы должны:
A. обновите схему базы данных в Обозревателе баз данных (щелкните правой кнопкой мыши, обновить)
B. сохраните конструктор после удаления таблиц
c. сохраните снова после перетаскивания таблиц спина.Примечание хотя, если вы изменили какие - либо свойства (например, отключив дочернее свойство ассоциации), это, очевидно, потеряет эти изменения-вам придется сделать их снова.
используйте SQLMetal для восстановления схемы из базы данных. Я видел несколько сообщений в блоге, которые показывают как написать это.
внести изменения непосредственно в панели свойств DBML. Это работает для простых изменений, таких как разрешение нулей на поле.
конструктор DBML не установлен по умолчанию в Visual Studio 2015 или Visual Studio 2017. Вам нужно будет закрыть VS, запустить установщик VS и изменить свою установку. Элемент LINQ to SQL tools - это функция, которую вы должны установить.
обновить таблицы .dbml-диаграмма с, например, добавленными столбцами, сделайте это:
- обновите окно Проводника SQL Server.
- перетащите "новую" версию таблицы в поле .dbml-диаграмма (report1 на рисунке ниже).
- отметьте добавленные столбцы в новой версии таблицы, нажмите Ctrl+C скопировать добавлены столбцы.
- нажмите на "старую" версию таблицы и нажмите Ctrl+V чтобы вставить добавленные столбцы в уже существующую версию таблицы.
вы также можете проверить PLINQO набор шаблонов генерации кода, основанных на CodeSmith, которые позволяют вам делать много аккуратных вещей Для и с Linq-to-SQL:
- создать один файл для каждого класса (вместо одного огромного файла)
- обновлять модель по мере необходимости
- многие другие функции
проверьте сайт PLINQO на http://www.plinqo.com и взгляните на вступление видео.
второй инструмент, который я знаю-это Huagati DBML / EDMX tools, которые позволяют обновлять файлы сопоставления DBML (Linq-to-SQL) и EDMX (Entity Framework) и многое другое (например, Соглашения об именах и т. д.).
Марк
мы используем пользовательский шаблон T4, который динамически запрашивает модель information_schema для каждой таблицы во всех наших.DBML файлы ,а затем перезаписывает части.DBML-файл со свежей информацией о схеме из базы данных. Я очень рекомендуем реализовать такое решение - это сэкономило мне кучу времени, и в отличие от удаления и повторного добавления таблиц в вашу модель вы можете сохранить свои ассоциации. С помощью этого решения вы получите ошибки времени компиляции, когда ваша схема изменения. Вы хотите, чтобы убедиться, что вы хоть и используете систему контроля версий, потому что сравниваете-это очень удобно. Это отличное решение, которое хорошо работает, если вы разрабатываете первый подход к схеме БД. Конечно, я не могу поделиться кодом моей компании, поэтому вы сами пишете это самостоятельно. Но если вы знаете некоторые Linq-to-XML и можете пойти в школу на этом проекте, вы можете добраться туда, где вы хотите быть.
Я бы рекомендовал использовать визуальный конструктор, встроенный в VS2008, так как обновление dbml также обновляет код, созданный для вас. Изменение dbml за пределами визуальный конструктор приведет в базовом коде из-за отсутствия синхронизации.
есть нюанс в обновлении таблиц, а затем обновление DBML... Отношения внешнего ключа не всегда сразу переносятся, если изменения вносятся в существующие таблицы. Работа вокруг состоит в том, чтобы сделать сборку проекта, а затем снова добавить таблицы. Я сообщил об этом MS и его исправили для VS2010.
DBML дисплей не показывает новые ограничения внешнего ключа
обратите внимание, что инструкции, приведенные в основном ответе, не ясны. Чтобы обновить таблицу
- откройте область конструктора dbml
- выберите Все таблицы с правой кнопкой мыши - > выберите Все или CTRLa
- CTRLx (вырезать)
- CTRLv (вставить)
- сохранить и перестроить решение.
в случае обновления хранимой процедуры, вы должны удалить его из.dbml-файл и снова вставьте его. Но если хранимая процедура имеет два пути (например: if something; display some columns; else display some other columns), убедитесь, что два пути имеют одинаковые псевдонимы столбцов!!! В противном случае будут существовать только первые столбцы пути.



Comments