2017-03-15 31 views
0

我想了解迁移。我有AutomaticMigrationsEnabled = true;并创建了初始迁移。Azure实体框架AutomaticMigrationsEnabled更改数据类型不会更新数据库类型

如果我添加一个新的DBSet到DBContext并发布这个服务,那么数据库被更新为一个对应的新表。但是,如果我更改实体类中属性的数据类型,例如将StatusID从int更改为下面示例中的字符串,并发布服务,则相应的列数据类型不会在数据库中更新。

如果AutomaticMigrationsEnabled = true,那么为什么在这种情况下数据库不会自动更新?

感谢

namespace myService.DataObjects 
{ 
    public class Status : EntityData 
    { 
    public int StatusID { get; set; } 
    public string Description { get; set; } 
    } 
} 

public class myServiceContext : DbContext 
{.... 
public Configuration() 
{ 
    AutomaticMigrationsEnabled = true; 
    AutomaticMigrationDataLossAllowed = true; 
    SetSqlGenerator("System.Data.SqlClient", new EntityTableSqlGenerator()); 
} 
+0

您是否遇到过每个属性的这个问题,或仅仅是StatusID? 像这样更改列类型通常涉及删除和重新创建列。 StatusID是你的PK,但是在Azure SQL中(我猜根据你使用Azure SQL的标签)没有PK就没有表。即使PK正在进行更改操作。 你有没有在你的日志中看到任何错误? –

+0

StatusID不是主键,因为我从EntityData类继承,主键是来自EntityData类的ID。我会尝试更改其他属性,但现在我觉得它处于不稳定状态,我需要重置迁移以真正测试它,但我猜测它正在发生在所有属性上。我一直有问题保持同步,一分钟似乎工作,然后弹出一个这样的问题。 –

+0

好吧,它现在对我来说是工作的,我不确定我是否看到过去或过去的事情,但我会将其标记为已回答。感谢您花时间在此 –

回答

0

现在为我工作,我不知道,如果我是在过去还是什么看到的东西,但我将作为回答,以纪念这一点。感谢您花费在此的任何时间

相关问题