问题 在Mono中启用实体框架迁移


我已经开始使用Xamarin Studio在Mac OS上构建ASP.NET MVC3项目。我现在想要为项目添加新的属性和模型,但我不能在我的生活中找出如何运行Nuget Package Manager控制台以运行Enable-Migrations命令。

我问得太多了吗?这是可能的还是我必须回到Windows上的Visual Studio?


10530
2017-12-04 11:58


起源



答案:


所有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 看到 从代码运行和脚本迁移 罗恩米勒。


15
2017-12-04 17:42



看起来像臀部疼痛 - BRogers
你发布了一个解决方案仍然很酷......根本没有淡化你...只是希望它内置了它 - BRogers
@bricelam,你在哪里可以运行这段代码?我应该单独制作一个控制台项目吗?或者调用控制器动作? - Erwin Rooijakkers
Mono抛出“MARS尚未实施” - 例外...... - Erwin Rooijakkers
@ user2609980我推荐一个单独的控制台应用程序。 - bricelam


答案:


所有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 看到 从代码运行和脚本迁移 罗恩米勒。


15
2017-12-04 17:42



看起来像臀部疼痛 - BRogers
你发布了一个解决方案仍然很酷......根本没有淡化你...只是希望它内置了它 - BRogers
@bricelam,你在哪里可以运行这段代码?我应该单独制作一个控制台项目吗?或者调用控制器动作? - Erwin Rooijakkers
Mono抛出“MARS尚未实施” - 例外...... - Erwin Rooijakkers
@ user2609980我推荐一个单独的控制台应用程序。 - bricelam