Синхронизировать схему DBML LINQ-to-SQL с базой данных SQL Server - PullRequest
0 голосов
/ 27 мая 2010

После создания базы данных SQL Server 2008 я создал схему Linq-to-SQL в Visual Studio. Затем в визуальном редакторе .dbml (в Visual Studio 2010) я добавил в схему ассоциации PK-FK и PK-PK.

Как мне скопировать те ассоциации, которые я создал в Visual Studio, в базу данных ? Другими словами, как мне синхронизировать с БД?

1 Ответ

3 голосов
/ 27 мая 2010

Linq-to-SQL - отличный инструмент, но никогда не полагайтесь на него при обновлении схемы. Всегда применяйте изменения схемы с помощью сценариев обновления SQL, которые используют операторы DDL CREATE / ALTER / DROP, чтобы изменить развернутую схему с версии на диске на текущую версию . Таким образом, вы сохраняете все изменения схемы под контролем версий в виде исходных текстовых файлов, вы можете выполнить обновление с любой предыдущей версии до текущей версии приложения, а также легко протестировать все пути обновления, включая обновление развертываний с очень большими таблицами.

Гораздо худшая альтернатива - использовать инструменты сравнения SQL, которые могут отличать желаемую схему от развернутой схемы, например vsdbcmd . Это может работать при простом развертывании, но копирование и переименование таблиц миллионов записей быстро покажет его отвратительный недостаток.

Чего вы абсолютно не можете сделать, так это полагаться на файл .dbml как на «главную» копию вашей схемы. Сторонники Linq-SQL обычно пропускают эту небольшую деталь, которую вы обычно обнаруживаете, когда пытаетесь доставить v2 своего приложения и понимаете, что у вас нет набора инструментов обновления.

...