如何在 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>());
【讨论】:
新的 CreateDatabaseIfNotExistsglobal.asax.cs
或 Program.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