【发布时间】:2016-04-18 10:37:39
【问题描述】:
我正在编写一个附加到我使用 Model First 创建的数据库的 web api。
作为新手,我将 Model First 与 Code First 混淆了。
由于这是我的第一个 EF/Web 应用程序,我没有意识到 Model First 还没有实现迁移,我按照程序来实现它。当它运行时,我收到了一些错误,查看了它们,然后才意识到我需要再次删除它。
按照某人的指示,我删除了迁移文件夹以及数据库中的 _migrationHistory 表。
但是现在每当数据库中缺少 _migrationhistory 表时,我都会收到以下异常。
protected void Application_Start()
{
// Call initializer
Database.SetInitializer(new PulseDbInitializer());
new ApplicationDbContext().Database.Initialize(true); <- error here
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
“在 EntityFramework.dll 中发生了 'System.NotSupportedException' 类型的异常,但未在用户代码中处理 附加信息:无法检查模型兼容性,因为数据库不包含模型元数据。只能检查使用 Code First 或 Code First 迁移创建的数据库的模型兼容性。"
以下是我的初始化器的部分描述
public partial class PulseDbInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext>, IPulseDbInit
//public partial class PulseDbInitializer :DropCreateDatabaseAlways<ApplicationDbContext>, IPulseDbInit
{
private ApplicationDbContext _context;
protected override void Seed(ApplicationDbContext context)
{
_context = context;
var pid = new PulseDbInitializionData(context);
pid.Init(this);
}
}// class PulseDbInitializer
即使我删除了迁移子文件夹,该应用程序似乎也在尝试使用迁移(因为它正在创建 _migrationhistory 表)。 作为新手,我不知道该去哪里。我知道我已经创建了初始化程序,见上文,所以我错过了什么吗?
编辑 - 评论太长了
我不确定我们是否相互理解。
非常简单,如果我从项目中删除 Migration 子目录并删除数据库,我不知道是什么在我的数据库中生成 _MigrationHistory 表作为 afaik,然后我认为这就是我需要做的所有事情来删除迁移。
首先在我的模型中,DropCreateDatabaseIfModelChanges 是我一直用于生成数据库的,并且按预期工作。它创建一个新数据库,或在模型更改时重新创建。
在添加迁移之前,我没有注意到这个 _MigrationHistory 表,并且我不知道 add-migration 命令是否向我的项目中添加了我需要删除或更改的任何代码(我真的很讨厌发生的事情和没有被告知在某种日志中究竟做了什么。请微软,以备将来参考)
或者我完全错了,_MigrationHistory 表一直在那里,但我从未注意到?只要我不移除桌子,这一切似乎都有效。
【问题讨论】:
-
您已注释掉的 DropCreateDatabaseAlways 应该可以工作。 stackoverflow.com/questions/29349443/…
-
@SteveGreene 是的,但这会在每次初始化时删除并重新创建数据库,不是吗?
-
是的,运行一次然后切换回 DropCreateDatabaseIfModelChanges
标签: c# entity-framework entity-framework-migrations ef-model-first