如何在 Entity Framework 4.3.1 中禁用迁移?

Posted

技术标签:

【中文标题】如何在 Entity Framework 4.3.1 中禁用迁移?【英文标题】:How to disable migration in Entity Framework 4.3.1? 【发布时间】:2012-03-31 00:30:39 【问题描述】:

有没有办法在 Entity Framework 4.3.1 中禁用迁移?我从项目中删除了迁移文件夹和数据库中生成的表,但它不起作用!如何移除迁移?

【问题讨论】:

你说的不起作用是什么意思? 我的意思是当我删除这些文件和表时,我希望迁移被禁用,但它还处于启用状态。当我运行项目时,它会发生关于迁移的错误 尝试将Database.SetInitializer<YourContextType>(null) 添加到应用程序的启动中。 它有效。谢谢你。但是现在,如何使用 ef 创建数据库? 对于 EF6,请参阅 How can I disable migration in Entity Framework 6.0 【参考方案1】:

如果您不想使用迁移但同时又希望 EF 为您创建数据库,则只需设置正确的数据库初始化程序:

Database.SetInitializer<YourContextType>(new CreateDatabaseIfNotExists<YourContentType>());

【讨论】:

新的 CreateDatabaseIfNotExists() 这实际上进入了什么类/文件? @jep,您的应用程序的入口点。例如。 global.asax.csProgram.Main. 这在 EF6 中不起作用。由于迁移和初始化程序之间的冲突,MSFT 将其关闭。见entityframework.codeplex.com/workitem/1689 即使没有任何更改,如何让它始终从头开始重建?我尝试了很多方法。【参考方案2】:

我解决这个问题的方法是确保我在我的代码中关闭了自动迁移:

internal sealed class Configuration : DbMigrationsConfiguration<YourContext>

    public Configuration()
    
        AutomaticMigrationsEnabled = false;
    

然后我从数据库中删除了 _MigrationHistory 表(如果找不到,这通常创建为系统表)

【讨论】:

因为太含糊而投反对票。您在代码中的哪个位置包含了该命令? 嗯...好问题 JBeckton。自从我查看该代码以来已经有一段时间了,而且我认为我仍然无法在任何地方访问它。我记得它在我的代码的实体框架设置部分。不是很有帮助,我知道,所以对此我深表歉意。 AutomaticMigrationsEnabled 属性位于 /Migrations/Configuration.cs【参考方案3】:

删除Migrations 文件夹对我有用。我没有收到任何错误,这让我回到了开始的地方。

【讨论】:

Migrations 文件夹在哪里?我是 EF6 代码优先,似乎没有任何地方。我当然没有做。

以上是关于如何在 Entity Framework 4.3.1 中禁用迁移?的主要内容,如果未能解决你的问题,请参考以下文章

我的项目中安装了哪个版本的Entity Framework?

SQL Server CE 4 Entity Framework 4.3.1 Code First 不区分重音和不区分大小写的搜索

Entity Framework 学习系列 - 认识理解Entity Framework

C# Entity-Framework:如何在模型对象上组合 .Find 和 .Include?

如何使用Entity Framework仅更新一个字段?

如何在 Entity Framework Core 中运行存储过程?