相关疑难解决方法(0)

重置实体框架迁移

我已经搞砸了我的迁移,我用于IgnoreChanges初始迁移,但现在我想要删除所有迁移,并开始使用所有逻辑进行初始迁移.

当我删除文件夹中的迁移并尝试Add-Migration它并不生成一个完整的文件(它是空的 - 因为我上次没有做任何更改,但现在已删除,迁移).

是否有任何Disable-Migrations命令,所以我可以重新运行Enable-Migrations

entity-framework database-migration ef-migrations

287
推荐指数
8
解决办法
18万
查看次数

实体框架代码优先:迁移失败,更新数据库,强制不必要的(?)添加迁移

我使用迁移(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)

entity-framework ef-migrations

65
推荐指数
2
解决办法
13万
查看次数

DbMigrator - 详细代码优先迁移

使用程序包管理器控制台时,可以运行以下命令:

PM> Update-Database -Verbose
Run Code Online (Sandbox Code Playgroud)

-Verbose交换机将所有尝试的SQL命令写入控制台窗口,这对于调试是非常有用的.

您可以使用DbMigrator该类在代码中执行相同的操作:

Configuration config = new Configuration();
//... (set up the config object)
DbMigrator migrator = new DbMigrator(config);
migrator.Update();
Run Code Online (Sandbox Code Playgroud)

-Verbose如果你使用这DbMigrator门课,有没有类似开关的东西?我查看了整个文档,但找不到任何东西.

.net c# entity-framework ef-migrations

7
推荐指数
1
解决办法
3777
查看次数