tl;dr Проекты баз данных многофункциональны, но в первую очередь ориентированы на базы данных. Миграции — это прежде всего код, но они имеют очень ограниченный набор встроенных функций базы данных.
Для многих людей не имеет смысла сравнивать проекты баз данных и миграции. Они представляют два разных режима работы с Entity Framework. Миграции — это прежде всего код, DP — это база данных. Конечно, вы можете использовать миграции для управления схемой базы данных и, кроме того, синхронизировать DP с созданной базой данных, чтобы удовлетворить требования администраторов баз данных (как следует из ссылки). Но оба ведут свою собственную жизнь, и не существует Единого Источника Истины.
Так что сравнивать их полезно, если вы еще не уверены, какой режим работы вы собираетесь выбрать.
Для меня наиболее важным отличием является то, что DP будет охватывать все объекты базы данных и обнаруживать все изменения между ними при сравнении баз данных. Миграции обнаруживают только изменения между базой данных и отображаемой моделью. И набор опций для генерации объектов базы данных очень ограничен. Для всего, что вам нужно дополнительно, вы должны ввести операторы SQL в код миграции. Эти заявления являются вашей собственной ответственностью. Вы должны выяснить сами, нужна ли миграция инструкция ALTER PROCEDURE
или нет (например). EF не будет жаловаться, если сценарий и база данных будут отличаться в этом отношении.
Это основная причина, по которой я никогда не был большим поклонником миграции. Практически невозможно поддерживать зрелую схему базы данных, включая хранилище, файловые группы, привилегии, параметры сортировки и все, что у вас есть.
Еще одним преимуществом DP является то, что они отлично сочетаются с системой контроля версий. Каждый объект базы данных имеет свой собственный файл, и очень легко проверить историю изменений каждого отдельного объекта. Это невозможно с сгенерированными миграциями. Действительно, многие промежуточные изменения могут никогда не попасть в сгенерированную миграцию.
Конечно, очевидным преимуществом миграций является возможность во время выполнения (пусть и неполная) проверки соответствия кода и базы данных. В проектах, ориентированных на базу данных, вам необходимо создать для этого собственный механизм.
person
Gert Arnold
schedule
06.09.2018