Відповіді:
Існує три способи синхронізації моделі.
Видаліть модифіковані таблиці з конструктора та перетягніть їх на поверхню дизайнера з Провідника баз даних. Я виявив, що для надійної роботи вам потрібно:
а. Оновіть схему бази даних в Провіднику баз даних (клацніть правою кнопкою миші, оновіть)
b. Збережіть конструктор після видалення таблиць
c. Знову збережіть після перетягування таблиць назад.
Зауважте, що якщо ви змінили будь-які властивості (наприклад, вимкнення дочірньої власності асоціації), це очевидно втратить ці зміни - вам доведеться їх внести знову.
Використовуйте SQLMetal для відновлення схеми з вашої бази даних. Я бачив ряд публікацій в блозі, де показано, як це зробити .
Внесіть зміни безпосередньо на панелі властивостей DBML. Це працює для простих змін, наприклад, дозволяючи нулю на полі.
Дизайнер DBML не встановлений за замовчуванням у Visual Studio 2015, 2017 або 2019. Вам доведеться закрити VS, запустити інсталятор VS та змінити інсталяцію. Інструменти LINQ to SQL - це функція, яку потрібно встановити. Для VS 2017/2019 ви можете знайти його в розділі Індивідуальні компоненти> Інструменти коду .
Щоб оновити таблицю у .dbml-діаграмі за допомогою, наприклад, доданих стовпців, зробіть це:
Ви можете також перевірити PLINQO набір шаблонів генерації коду, заснованого на CodeSmith, які дозволяють зробити багато акуратні речі для і з Linq до SQL:
Перегляньте сайт PLINQO за адресою http://www.plinqo.com та ознайомтеся із вступними відео.
Другий інструмент, про який я знаю, - це інструменти Huagati DBML / EDMX , що дозволяють оновлювати файли відображення DBML (Linq-to-SQL) та EDMX (Entity Framework) і багато іншого (як конвенції іменування тощо).
Марк
Ми використовуємо спеціально написаний шаблон T4, який динамічно запитує модель information_schema для кожної таблиці у всіх наших .DBML-файлах, а потім перезаписує частини файлу .DBML зі свіжою інформацією про схему з бази даних. Я високорекомендую реалізувати таке рішення - це заощадило мені час, і на відміну від видалення та повторного додавання ваших таблиць до вашої моделі, ви можете зберегти свої асоціації. За допомогою цього рішення ви отримаєте помилки під час компіляції при зміні схеми. Хочете переконатися, що ви використовуєте систему контролю версій, тому що відрізняти дійсно зручно. Це чудове рішення, яке добре працює, якщо ви розробляєте за допомогою першого підходу схему БД. Звичайно, я не можу поділитися кодом своєї компанії, тому ви самостійно пишете це. Але якщо ви знаєте якийсь Linq-to-XML і можете піти до школи за цим проектом , ви можете дістатися до місця, де ви хочете бути.
Я рекомендую використовувати візуальний дизайнер, вбудований у VS2008, оскільки оновлення dbml також оновлює код, який генерується для вас. Змінення dbml поза візуального дизайнера призведе до того, що базовий код не синхронізується.
Існує нюанс в оновленні таблиць, а потім в оновленні DBML ... Зовнішні ключові зв'язки не завжди завжди перетворюються, якщо вносяться зміни до існуючих таблиць. Робота навколо полягає в тому, щоб скласти проект, а потім знову додати таблиці. Я повідомив про це в MS та про її встановлення на VS2010.
Дисплей DBML не показує нових обмежень зовнішнього ключа
Зауважте, що інструкції, наведені в основній відповіді, не зрозумілі. Для оновлення таблиці
У разі оновлення збереженої процедури слід видалити її з .dbml-файлу та знову вставити його. Але якщо збережена процедура має два шляхи (наприклад, якщо щось; відображати деякі стовпці; інше відображати деякі інші стовпці), переконайтеся, що два шляхи мають однакові псевдоніми стовпців !!! Інакше існуватимуть лише перші стовпці шляху.
Ось повний покроковий метод, який працював на мене для того, щоб оновити LINQ до dbml SQL та пов'язані з ним файли, щоб включити новий стовпець, який я додав до однієї з таблиць бази даних.
Вам потрібно внести зміни на вашу дизайнерську поверхню, як це запропоновано іншими вище; проте вам потрібно зробити кілька додаткових кроків. Це повні кроки:
1. Drag your updated table from Server Explorer onto the design surface
2. Copy the new column from this "new" table to the "old" table (see M463 answer for details on this step)
3. Delete the "new" table that you just dragged over
4. Click and highlight the stored procedure, then delete it
5. Drag the new stored procedure and drop into place.
6. Delete the .designer.vb file in the code-behind of the .dbml
(if you do not delete this, your code-behind containing the schema will
not update even if you rebuild and the new table field will not be included)
7. Clean and Rebuild the solution (this will rebuild the .designer.vb file to include all the new changes!).