Я пытаюсь использовать и понимать EF Migrations (используя EF 4.3.1, Code First). Чтобы поднять новое изменение, я должен использовать следующую команду:
Add-Migration MyMigration
-ConnectionString "Data Source=.;Initial Catalog=mydb;"
-ConnectionProviderName "System.Data.SqlClient"
-StartUpProjectName MyWebsite
-ProjectName MyEF.Migrations
Почему для добавления-миграции требуются данные строки соединения? Update-Database
нуждается в одном, что имеет смысл. Но не имеет ли Add-Migration все, что нужно от DbContext и конфигурации?
Это не просто праздное удивление, это очень запутывает, чтобы дать ему базу данных, потому что у нас есть "многопользовательская" вещь, где желаемая база данных является гибкой и может меняться от запроса к запросу, не говоря уже о статическом времени компиляции. Поэтому, если Add-Migration
фактически использует эту базу данных для чего-либо, у нас есть проблема.
UPDATE: мы отказались от EF Migrations и вместо этого использовали Fluent Migrator и счастливы. Это намного, гораздо быстрее, даже учитывая тот факт, что мы должны написать несколько вещей дважды (один раз для объекта EF и один раз для миграции), и в нем нет проблем, обсуждаемых в этом вопросе.