Как обновить файл Linq to SQL.dbml?
Как обновить файл linq to SQL dbml?
Ответ 1
Существует три способа синхронизации модели.
-
Удалите измененные таблицы из конструктора и перетащите их обратно на поверхность конструктора из проводника баз данных. Я обнаружил, что для надежной работы необходимо:
а. Обновите схему базы данных в Database Explorer (щелкните правой кнопкой мыши, обновите)
б. Сохранить дизайнер после удаления таблиц
с. Сохраните снова после перетаскивания таблиц назад.Однако обратите внимание, что если вы изменили какие-либо свойства (например, отключив дочернее свойство ассоциации), это, очевидно, утратит эти изменения - вам придется делать их снова.
-
Используйте SQLMetal для регенерации схемы из вашей базы данных. Я видел несколько постов в блоге, которые показывают, как это написать.
-
Внесите изменения непосредственно в панели свойств DBML. Это работает для простых изменений, таких как разрешение пустых значений в поле.
Конструктор DBML не устанавливается по умолчанию в Visual Studio 2015, 2017 или 2019. Вам придется закрыть VS, запустить установщик VS и изменить установку. Инструменты LINQ to SQL - это функция, которую вы должны установить. Для VS 2017/2019 вы можете найти его в разделе "Отдельные компоненты"> "Инструменты кода".
Ответ 2
Чтобы обновить таблицу в вашей .dbml-диаграмме с помощью, например, добавленных столбцов, выполните следующие действия:
- Обновите окно проводника SQL Server.
- Перетащите "новую" версию вашей таблицы в .dbml-диаграмму (отчет1 на рисунке ниже).
- Отметьте добавленные столбцы в новой версии таблицы, нажмите Ctrl + C, чтобы скопировать добавленные столбцы.
- Нажмите "старую" версию вашей таблицы и нажмите Ctrl + V, чтобы вставить добавленные столбцы в уже существующую версию таблицы.
Ответ 3
Вы также можете проверить PLINQO набор шаблонов генерации кода на основе CodeSmith, которые позволяют вам делать много аккуратных вещи для и с Linq-to-SQL:
- создать один файл для каждого класса (вместо одного огромного файла)
- обновите свою модель при необходимости
- еще много функций
Зайдите на сайт PLINQO в http://www.plinqo.com и посмотрите видеоролики с интро.
Второй инструмент, о котором я знаю, - это инструменты Huagati DBML/EDMX, которые позволяют обновлять DBML (Linq-to-SQL) и EDMX (Entity Framework) и т.д. (Например, соглашения об именах и т.д.).
Марк
Ответ 4
Мы используем пользовательский письменный шаблон T4, который динамически запрашивает модель information_schema для каждой таблицы во всех наших файлах .DBML, а затем перезаписывает части файла .DBML со свежей информацией о схеме из базы данных. Я высоко рекомендую реализовать такое решение, как это: он спас меня от времени, и, в отличие от удаления и повторного добавления ваших таблиц в вашу модель, вы должны поддерживать свои ассоциации. С помощью этого решения вы получите ошибки во время компиляции, когда ваша схема изменится. Вы хотите убедиться, что используете систему управления версиями, потому что отличать это действительно удобно. Это отличное решение, которое хорошо работает, если вы разрабатываете первый подход схемы базы данных. Конечно, я не могу поделиться своим балансом, поэтому вы сами можете написать это. Но если вы знаете некоторый Linq-to-XML и можете пойти в школу в этом проекте, вы можете добраться туда, где хотите.
Ответ 5
Я бы рекомендовал использовать визуальный конструктор, встроенный в VS2008, так как обновление dbml также обновляет код, созданный для вас. Изменение dbml вне визуального конструктора приведет к тому, что базовый код не синхронизируется.
Ответ 6
Существует нюанс обновления таблиц, а затем обновление DBML... Внешние отношения ключей не всегда всегда переносятся, если изменения внесены в существующие таблицы. Работа вокруг состоит в том, чтобы выполнить сборку проекта, а затем снова добавить таблицы. Я сообщил об этом MS и установил его для VS2010.
Дисплей DBML не показывает новые ограничения внешнего ключа
Обратите внимание, что инструкции, приведенные в основном ответе, не ясны. Чтобы обновить таблицу
- Откройте панель дизайна dbml.
- Выберите все таблицы с помощью кнопок "Вправо" - "-" - "Выбрать все" или "<30" a
- CTRL x (Вырезать)
- CTRL v (Вставить)
- Сохранить и перестроить решение.
Ответ 7
В случае обновления хранимой процедуры вы должны удалить его из файла .dbml и снова вставить его снова. Но если хранимая процедура имеет два пути (например: если что-то, отображение некоторых столбцов, а другое - некоторые другие столбцы), убедитесь, что два пути имеют одинаковые псевдонимы столбцов!!! В противном случае будут существовать только первые столбцы пути.