我在我的Web API(Mobile Service .NET后端)中使用Code First Migrations,每当我的模型发生更改时,所有数据都会从我的数据库中删除。这就是我在做的事情:
新迁移已添加到Migrations文件夹(请参阅下面的代码)
public partial class AddTestProperty: DbMigration
{
public override void Up()
{
AddColumn("testdb.TestTable", "Test", c => c.String());
}
public override void Down()
{
DropColumn("testdb.TestTable", "Test");
}
}
我的配置如下:
public Configuration()
{
AutomaticMigrationsEnabled = false;
AutomaticMigrationDataLossAllowed = false;
}
现在,如果我运行我的web服务,该属性将添加到我的TestTable中,但所有表中的所有数据都将被删除。我做错了什么?
答案 0 :(得分:1)
我的数据从我的数据库中删除的原因是:如果您使用从Azure门户下载的服务项目,您将在App_Start / WebsApiConfig中找到以下代码:
public static class WebApiConfig
{
public static void Register()
{
// Use this class to set configuration options for your mobile service
ConfigOptions options = new ConfigOptions();
// Use this class to set WebAPI configuration options
HttpConfiguration config = ServiceConfig.Initialize(new ConfigBuilder(options));
Database.SetInitializer(new todoInitializer());
}
}
public class todoInitializer : ClearDatabaseSchemaIfModelChanges<todoContext>
{
.....
要在Mobile Services .NET后端启用Code First Migrations,您需要替换Database.SetInitializer(new todoInitializer());有了这个:
//Database.SetInitializer(new todoInitializer());
var migrator = new DbMigrator(new Configuration());
migrator.Update();
这需要以下使用声明:
using System.Data.Entity.Migrations;
using todoService.Migrations;
有关how to enable Code First Migrations on a Mobile Service .NET backend的更多信息。