Я использую классы LINQ to SQL в проекте, где дизайн базы данных все еще немного изменен.
Есть ли простой способ синхронизации классов со схемой или мне нужно вручную обновлять классы при изменении дизайна таблицы?
Я использую классы LINQ to SQL в проекте, где дизайн базы данных все еще немного изменен.
Есть ли простой способ синхронизации классов со схемой или мне нужно вручную обновлять классы при изменении дизайна таблицы?
Вы можете использовать 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>
Я не пробовал это сам, но 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 из свойства базы данных.
Вот простое исправление без какого-либо дополнительного программного обеспечения, которое просто работает для простых изменений (например, добавленных полей, нескольких таблиц и т.д.).
right-click ->
) copy
insert
их (сначала удалите измененные поля).Я знаю, что это явно очевидно, но почему-то неинтуитивно, и это очень помогло мне, поскольку все нужные атрибуты и типы будут скопированы, а все ссылки останутся нетронутыми. Надеюсь, что это поможет.
Конечно, это - как сказано - для небольших изменений, но, безусловно, лучше, чем ручная замена таблиц многими ссылками, или когда вам не нужна вся ваша структура базы данных, сгенерированная SQLMetal. Например, когда у вас большое количество таблиц (например, SAP) или при использовании сшитых таблиц из разных баз данных.
DamienG написал несколько t4 templates, которые могут заменить некоторые из того, что VS генерирует для вас. Их можно повторно запускать, когда захотите, с помощью инструмента командной строки.
Шаблоны T4 имеют дополнительное преимущество при редактировании. Это позволяет вам настроить то, что генерируется для вас, содержание сердец.
Я думаю, что Джефф недавно жаловался на это. Один из распространенных способов - снова перетащить все объекты в конструктор...
Надеюсь, что кто-то еще купит лучший подход!
Я написал инструмент для внесения изменений script в сценарии Dbml, см. http://code.google.com/p/linqtodbmlrunner/ и мой блог http://www.adverseconditionals.com
Как изменить свойства объекта/таблицы на поверхности дизайна DataContext в Visual Studio?
Например, если я добавил столбец в таблицу SQL Server:
Автогенерируемые классы моделей должны отражать новый столбец, который был добавлен.