解决方案 - 实体类型 ApplicationUser 不是当前上下文模型的一部分
Solution - The entity type ApplicationUser is not part of the model for the current context
我将这个问题作为文档发布,因为我花了很多时间才找到这个简单的问题。我正在使用 VS15 生成的原始 MVC 项目并尝试对其进行修改。
错误:[InvalidOperationException:实体类型 ApplicationUser 不是当前上下文模型的一部分。]
由于多种原因,您可能会遇到此错误。这不是一个有保证的修复,但希望它能为外面的人节省一些时间。出现此错误通常是因为您的应用程序使用的是默认 DbContext 而不是您打算使用的那个。
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext() : base("DefaultConnection") {}
}
项目生成此自定义 DbContext。您应该确保 "DefaultConnection" 是连接字符串或使用此 class.
的项目 Web.config 中的连接名称
这是我的连接字符串。注意名称与上面DbContext中的相同:
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-AspnetIdentitySample-10_8_3;Integrated Security=True" providerName="System.Data.SqlClient" />
确定连接字符串已设置后,我们需要检查 NinjectWebCommon 中的绑定。
kernel.Bind<ApplicationDbContext>().ToSelf();
kernel.Bind<IUserStore<ApplicationUser>>().To<UserStore<ApplicationUser>>().WithConstructorArgument("context", kernel.Get<ApplicationDbContext>());
kernel.Bind<UserManager<ApplicationUser>>().ToSelf();
这是我在应用程序中发现错误的地方。第一行不是必需的,但这是一个好主意。第二行是最重要的。
UserStore 有 2 个构造函数。第一个是空的。第二个有 1 个参数,DbContext 上下文。 Ninject 的构造函数参数区分大小写,必须将 "context" 命名为 Ninject 才能正确地 select 此构造函数。
我将这个问题作为文档发布,因为我花了很多时间才找到这个简单的问题。我正在使用 VS15 生成的原始 MVC 项目并尝试对其进行修改。
错误:[InvalidOperationException:实体类型 ApplicationUser 不是当前上下文模型的一部分。]
由于多种原因,您可能会遇到此错误。这不是一个有保证的修复,但希望它能为外面的人节省一些时间。出现此错误通常是因为您的应用程序使用的是默认 DbContext 而不是您打算使用的那个。
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext() : base("DefaultConnection") {}
}
项目生成此自定义 DbContext。您应该确保 "DefaultConnection" 是连接字符串或使用此 class.
的项目 Web.config 中的连接名称这是我的连接字符串。注意名称与上面DbContext中的相同:
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-AspnetIdentitySample-10_8_3;Integrated Security=True" providerName="System.Data.SqlClient" />
确定连接字符串已设置后,我们需要检查 NinjectWebCommon 中的绑定。
kernel.Bind<ApplicationDbContext>().ToSelf();
kernel.Bind<IUserStore<ApplicationUser>>().To<UserStore<ApplicationUser>>().WithConstructorArgument("context", kernel.Get<ApplicationDbContext>());
kernel.Bind<UserManager<ApplicationUser>>().ToSelf();
这是我在应用程序中发现错误的地方。第一行不是必需的,但这是一个好主意。第二行是最重要的。
UserStore 有 2 个构造函数。第一个是空的。第二个有 1 个参数,DbContext 上下文。 Ninject 的构造函数参数区分大小写,必须将 "context" 命名为 Ninject 才能正确地 select 此构造函数。