解决方案 – 实体类型ApplicationUser不是当前上下文的模型的一部分

我将此问题作为文档发布,因为我花了很多时间才找到这个简单的问题。 我正在接受VS15生成的原始MVC项目并尝试修改它。

错误:[InvalidOperationException:实体类型ApplicationUser不是当前上下文模型的一部分。]

出于各种原因,您可能会收到此错误。 这不是一个保证修复,但希望它会为那里的人节省一些时间。 此错误通常是因为您的应用程序使用默认DbContext而不是您打算使用的DbContext。

public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext() : base("DefaultConnection") {} } 

该项目生成此自定义DbContext。 您应该确保“DefaultConnection”是连接字符串或使用此类的项目的Web.config中的连接名称。

这是我的连接字符串。 请注意,该名称与上面DbContext中的名称相同:

  

确定连接字符串设置后,我们需要检查NinjectWebCommon中的绑定。

 kernel.Bind().ToSelf(); kernel.Bind>().To>().WithConstructorArgument("context", kernel.Get()); kernel.Bind>().ToSelf(); 

这是我在我的应用程序中发现错误的地方。 第一行不是必需的,但是一个好主意。 第二行是最重要的。

UserStore有2个构造函数。 第一个是空的。 第二个有1个参数,DbContext上下文。 Ninject的构造函数参数区分大小写,并且必须为Ninject命名为“context”才能正确选择此构造函数。