【问题标题】:Model compatibility error模型兼容性错误
【发布时间】:2014-04-29 12:41:05
【问题描述】:

设置

我有一个使用 ASP.NET Identity 2.0 的应用程序。身份部分与应用程序所需的其余表共享一个数据库。所以在一个类库中,我有一个 dbcontext 可以访问数据库以获取业务数据,而在另一个类库中,我有 IdentityModel.cs,即 ApplicationDBContext。

问题:

一切正常,直到我陷入困境,试图弄清楚如何使用业务数据上下文进行迁移。我最终删除了 __MigrationHistory 表,因此删除了数据库中两个上下文的所有模型元数据。

我现在收到以下错误:

无法检查模型兼容性,因为数据库不包含模型元数据。只能检查使用 Code First 或 Code First 迁移创建的数据库的模型兼容性。

我删除了与业务数据相关的所有迁移,并为该项目重新启用了迁移。这具有为业务 dbcontext 重新创建模型元数据的效果。

但是,我不知道如何为身份元数据实现相同的目标。

问题:

如何在 ASP.NET Identity 2.0 的 __MigrationHistory 中重新创建模型元数据?

【问题讨论】:

    标签: asp.net-mvc entity-framework asp.net-identity-2


    【解决方案1】:

    在 Global.asax.cs 中编写以下代码,然后重试...

    Database.SetInitializer(new DropCreateDatabaseIfModelChanges<TsContext>()); 
    

    【讨论】:

    • 会删除数据库并重新创建它吗?如果是这样,我会错过业务模型表。
    • 如果我们不想删除数据库怎么办??
    【解决方案2】:

    我不得不重新创建数据库并重新开始。我仍然一无所知,以至于我不知道 Neel 的答案是否是生产数据库的正确答案。现在,我没有时间正确研究 AspNet.Identity 来找到问题的解决方案。对不起。

    治疗前预防:

    确实知道的是,如果我没有删除 __MigrationHistory 表,问题就不会发生。所以问题是自我伤害之一,因此预防而不是治疗是最好的选择。

    因此,故事的寓意是:

    道德:

    永远不要删除 __MigrationHistory 表。在做任何如此愚蠢、无能、无车和彻头彻尾的愚蠢的事情之前,请先了解一下它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 2012-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多