Сегодня я поддерживаю проект, который имеет действительно грязную БД, которая нуждается в большом количестве рефакторинга и публикует на клиентских машинах.
Я знаю, что я мог бы добавить проект SQL Server Database, который содержит только сценарии базы данных и создает файл .dacpac
, который позволяет мне автоматически менять базы данных клиентов.
Также я знаю, что я мог бы просто добавить файл .mdf
в папку App_Data
или даже в Solution_Data
и иметь там свою базу данных. Я полагаю, что localDb
, который уже существует, позволяет мне запускать мое решение без SQL Server
И теперь я знаю, что Entity Framework существует с его собственными миграциями. Но я не хочу использовать его, я не могу добавлять и изменять индексы с его миграциями, и у меня нет гибкости при написании, когда мне нужно описывать сложные сценарии миграции.
Мои цели:
- Автоматически создавать сценарии миграции для клиентов DB.
- Сделайте мое решение самодостаточным, чтобы любой новый программист, пришедший на проект, даже не требовал установки SQL Server на своей машине.
- Уметь обновлять локальную (разработку) базу за 1-2 клика.
- Уметь вернуться в историю изменений в db (у меня есть сервер TFS)
- Уметь иметь чистый (только со словарями или поисковыми таблицами) db в решении с современной схемой БД.
- Кроме того, я хочу иметь возможность обновлять мою модель БД ( EF или
.dbml
) автоматически или очень просто.
Так что я, что спросить:
-
Какие сильные и слабые стороны использования этих двух подходов, если я хочу достичь своих целей?
-
Может быть, я должен использовать комбинацию этих инструментов?
-
Или я не знаю о другом существующем инструменте от MS?
-
Есть ли способ обновить мою модель DAL из этой БД?