Лучший способ обновить классы LINQ to SQL после изменения схемы базы данных

Я использую классы LINQ to SQL в проекте, где дизайн базы данных все еще немного изменен.

Есть ли простой способ синхронизации классов со схемой или мне нужно вручную обновлять классы при изменении дизайна таблицы?

Ответ 1

Вы можете использовать SQLMetal.exe для генерации вашего файла dbml и /cs/vb. Используйте pre-build script, чтобы запустить его и настроить таргетинг на каталог, к которому принадлежит ваш проект datacontext.

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\sqlmetal.exe 
  /server:<SERVER> 
  /database:<database> 
  /code:"path\Solution\DataContextProject\dbContext.cs" 
  /language:csharp 
  /namespace:<your namespace>

Ответ 2

Я не пробовал это сам, но Huagati DBML/EDMX Tools рекомендуется другими людьми.

Huagati DBML/EDMX Tools - надстройка для Visual Studio, которая добавляет функциональность для Linq2SQL/DBML дизайнера диаграмм в Visual Studio 2008, и для ADO.NET Entity Дизайнер Framework в Visual Studio 2008 SP1. Надстройка добавляет новое меню варианты обновления конструктора Linq2SQL диаграмм с изменениями базы данных, для переименование Linq-to-SQL (DBML) и EF (EDMX) и свойства для использования .net, и для добавление документации/описаний в Сгенерированные классы Linq-to-SQL из свойства базы данных.

Screenshot of DBML Tools

Ответ 3

Вот простое исправление без какого-либо дополнительного программного обеспечения, которое просто работает для простых изменений (например, добавленных полей, нескольких таблиц и т.д.).

Инструкция:

  • Вы вытаскиваете копию измененной таблицы в конструктор (будет удален позже)
  • Теперь выберите все новые (или измененные) поля и (right-click ->) copy
  • В исходной таблице щелкните правой кнопкой мыши и insert их (сначала удалите измененные поля).
  • Теперь удалите таблицу, которую вы скопировали из

Я знаю, что это явно очевидно, но почему-то неинтуитивно, и это очень помогло мне, поскольку все нужные атрибуты и типы будут скопированы, а все ссылки останутся нетронутыми. Надеюсь, что это поможет.

Когда использовать:

Конечно, это - как сказано - для небольших изменений, но, безусловно, лучше, чем ручная замена таблиц многими ссылками, или когда вам не нужна вся ваша структура базы данных, сгенерированная SQLMetal. Например, когда у вас большое количество таблиц (например, SAP) или при использовании сшитых таблиц из разных баз данных.

Ответ 4

DamienG написал несколько t4 templates, которые могут заменить некоторые из того, что VS генерирует для вас. Их можно повторно запускать, когда захотите, с помощью инструмента командной строки.

Шаблоны T4 имеют дополнительное преимущество при редактировании. Это позволяет вам настроить то, что генерируется для вас, содержание сердец.

Ответ 5

Я думаю, что Джефф недавно жаловался на это. Один из распространенных способов - снова перетащить все объекты в конструктор...

Надеюсь, что кто-то еще купит лучший подход!

Ответ 7

Как изменить свойства объекта/таблицы на поверхности дизайна DataContext в Visual Studio?

Например, если я добавил столбец в таблицу SQL Server:

  • Откройте файл *.dbml.
  • Щелкните правой кнопкой мыши объект и выберите Добавить > Свойство.
  • Заполните значения в окне свойств нового столбца.
  • Создайте свое решение.

Автогенерируемые классы моделей должны отражать новый столбец, который был добавлен.

введите описание изображения здесь

введите описание изображения здесь