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