如何禁用代码首次迁移

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何禁用代码首次迁移相关的知识,希望对你有一定的参考价值。

我在EF5中有一个代码优先的实体模型。但我想手动管理数据库更改 - 我不希望EF修改我现有的数据库及其所有数据。但是当我在EF映射和数据库中进行并行更改时,EF拒绝正常运行,告诉我需要先使用代码迁移。我怎么关掉这个?

答案

将Database.SetInitializer设置为null。

public class DatabaseContext: DbContext
{
    //the base accepts the name of the connection string provided in the web.config as a parameter
    public DatabaseContext()
        : base("DatabaseContext")
    {
        //disable initializer
        Database.SetInitializer<DatabaseContext>(null);
    }
另一答案

所以我找到的最完整的答案是:

  1. 删除项目中的Migrations文件夹。
  2. 在DatabaseContext初始值设定项中设置Database.SetInitializer<DatabaseContext>(null);
  3. 删除数据库中的表__MigrationHistory。对于EF6 +,该表位于Tables下,但对于早期版本,它位于System Tables下。
  4. 建立并运行。
  5. 利润。
另一答案

如果要完全关闭迁移:

https://stackoverflow.com/a/9709407/141172

但是,我发现最好保持代码首次迁移,但是使用-Script选项让EF为我创建一个DB更改脚本,我可以手动应用于每个数据库(开发,QA,生产):

Update-Database -Script -ProjectName MyProject -StartupProjectName MyProject

这样EF就会为我创建更改脚本,而且我仍然可以完全控制所应用的更改。我像其他源代码一样对更改脚本进行版本控制。

另一答案

如果您已经使用过迁移,那么仅更改初始化程序将无济于事。您需要转到Management Studio,打开数据库表,转到System Tables文件夹并删除位于那里的__MigrationHistory表(对于EF6及更高版本,它位于Tables正下方)。这将禁用迁移。

另一答案

我刚解决了这个“问题”

  1. 从数据库中删除表“_MigrationHistory”。
  2. 从项目中删除“迁移”文件夹。
  3. 更新EDMX文件。
  4. 清理项目并重建它。

我的环境是

1. Visual Studio 2017 15.8.2
2. ASP NET MVC project
3. .NET Framework 4.6.1
4. Entity Framework 6.2.0

以上是关于如何禁用代码首次迁移的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用在android片段类中按下的后退按钮

实体框架代码首次迁移文件源代码控制

如何禁用从未启用的迁移

创建的Sdf在代码首次迁移后被删除

启用 EF 代码首次迁移后 Azure 网站出现内部服务器错误

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段