Enable Entity Framework migrations in Mono

2019-01-09 10:16发布

问题:

I've started building an ASP.NET MVC3 project on Mac OS using Xamarin Studio. I now want to add new properties and models to the project but I can't for the life of me work out how to run the Nuget Package Manager console in order to run the Enable-Migrations command.

Am I asking too much? Is this possible or will I have to go back to Visual Studio on Windows?

回答1:

All of the Entity Framework Migrations commands are just thin wrappers over an underlying API. To enable migrations, simply create a new class that derives from DbMigrationsConfiguration<TContext> in your project.

For Add-Migration use code similar to the following.

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);
    }
}

For Update-Database see Running & Scripting Migrations from Code by Rowan Miller.