我使用迁移(EF 5.0)和代码优先有一个有趣的效果:
我用GUID主键创建了一些模型.(顺便说一句:对我来说,SQL Server使用它很重要NEWSEQUENTIALID(),这似乎是当前版本中的默认值)
在某些时候,我激活了迁移.我在初始迁移中添加了一些代码,这主要是.Index()根据需要.
当我删除数据库并调用update-database时,出现以下错误:
无法更新数据库以匹配当前模型,因为存在挂起的更改并且已禁用自动迁移.将挂起的模型更改写入基于代码的迁移或启用自动迁移.将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移.您可以使用Add-Migration命令将挂起的模型更改写入基于代码的迁移.
我尝试过AutomaticMigrationsEnabled = true,无需更改或添加任何内容即可使用!
但既然我不想要AutomaticMigrationsEnabled,我也尝试再次删除数据库,update-database然后调用add-migration.我最终得到了一个似乎没有改变任何东西的额外迁移(见下文).我也尝试将这些行添加到初始迁移的底部 - 但这并没有改变任何东西.
其中一个型号:
[Table(Speaker.TABLENAME)]
public class Speaker : BaseModel
{
public const String TABLENAME = "Speaker";
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
[Required]
[MaxLength(50, ErrorMessage = "Name must be 50 characters or less")]
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
初始迁移代码:
public partial class InitialCreate : DbMigration
{
public override void Up()
{ …Run Code Online (Sandbox Code Playgroud)