Включить миграцию Entity Framework в Mono

Я начал создавать проект ASP.NET MVC3 в Mac OS с помощью Xamarin Studio. Теперь я хочу добавить в проект новые свойства и модели, но я не могу на всю жизнь разобраться, как запустить консоль Nuget Package Manager, чтобы запустить команду Enable-Migrations.

Я слишком много спрашиваю? Возможно ли это или мне нужно вернуться к Visual Studio в Windows?

Ответ 1

Все команды Entity Framework Migrations являются лишь тонкими обертками над базовым API. Чтобы включить миграцию, просто создайте новый класс, производный от DbMigrationsConfiguration<TContext>, в вашем проекте.

Для Add-Migration используйте код, подобный следующему.

var config = new MyMigrationsConfiguration();
var scaffolder = new MigrationScaffolder(config);
var migration = scaffolder.Scaffold("Migration1");

File.WriteAllText(migration.MigrationId + ".cs", migration.UserCode);

File.WriteAllText(migration.MigrationId + ".Designer.cs", migration.DesignerCode);

using (var writer = new ResXResourceWriter(migration.MigrationId + ".resx"))
{
    foreach (var resource in migration.Resources)
    {
        writer.AddResource(resource.Key, resource.Value);
    }
}

Подробнее о Update-Database см. Running & Сценарии миграции из кода Роуэн Миллер.

Обновление для EF 6.3 👇

Команда с именем ef6.exe была добавлена в пакет NuGet. Он содержит соответствующие команды для каждой из команд PMC:

|        PMC        |        ef6.exe        |
| ----------------- | --------------------- |
| Enable-Migrations | ef6 migrations enable |
| Add-Migration     | ef6 migrations add    |
| Update-Database   | ef6 database update   |
| Get-Migrations    | ef6 migrations list   |