首页 文章

将ASP.NET Identity升级到2.0后的异常

提问于
浏览
9

我的项目:VS2013,实体框架,Web表单,数据库优先,身份

我今天更新了我项目的所有NuGet包(2014-4-15) . 其中,Identity升级到2.0.0.0 .

我认为事情进展顺利,但不幸的是,当我运行应用程序时,以下语句给出了异常 .

namespace xxx.Models
{
    // You can add User data for the user by adding more properties to your User class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more.
    public class ApplicationUser : IdentityUser
    {
    }

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("MyConnection") 
        {
        }
    }
...
}

例外信息如下 . 它要求我做Code First Migration . 但我的项目是Database First webforms项目 . 我怎么解决这个问题?谢谢!


Microsoft.AspNet.Identity.EntityFramework.dll中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理

附加信息:自创建数据库以来,支持'ApplicationDbContext'上下文的模型已更改 . 这可能是因为ASP.NET Identity Framework使用的模型已更改或应用程序中使用的模型已更改 . 要解决此问题,您需要更新数据库 . 请考虑使用Code First Migrations更新数据库(http://go.microsoft.com/fwlink/?LinkId=301867) .
在使用“代码优先迁移”更新数据库之前,请通过在应用程序的ApplicationDbContext的构造函数中设置throwIfV1Schema = false来禁用ASP.NET身份的架构一致性检查 . public ApplicationDbContext():base("ApplicationServices",throwIfV1Schema:false)

2 回答

  • 15

    您需要通过执行错误说明来禁用架构一致性 . 这是从1.0版升级到2.0时发生的一次 .

    public ApplicationDbContext() : base("MyConnection", throwIfV1Schema:false)
    

    下一步 - 进行迁移 .

    一切都应该在那之后工作,你可以删除这个 throwIfV1Schema:false

    您还可以查看this了解更多信息

  • 0

    问题出在这里:

    public class ApplicationUser : IdentityUser
    {
    }
    

    我认为您应该更改为 partial 类以扩展实体框架中的实体 . 原因是EF将为每个实体生成代理类以连接到数据库 .

    partial 类应该写在同一个命名空间中 .

相关问题