我正在使用包含Asp.NET Identity,WebAPI2,KnockoutJS和SqlServer Express 2012的VS2013 SPA模板编写应用程序。
我开始使用IdentityUser
类来处理我的用户,并且工作得很好。我能够以没有问题的用户身份添加和登录。然后我想向IdentityUser添加自定义信息(有一篇文章我再也找不到了。)
因此,我创建了一个继承自User
的{{1}}类,如下所示。
IdentityUser
然后我将项目中的所有引用从public class User : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
更新为IdentityUser
。
现在,每当我尝试登录时,都会收到以下错误:
实体类型User不是当前上下文的模型的一部分。
问题是,我有一个DBInitializer(User
),它总是重新创建数据库并添加一些测试用户,并创建表并成功添加用户。
关于它的重要机会,这是我的cxn字符串:public class ApplicationDBInitializer : DropCreateDatabaseAlways<ApplicationDBContext>
和我的DBContext
<add name="DefaultConnection" connectionString="Server=.\SQLEXPRESS;Database=ibcf;Trusted_Connection=True;" providerName="System.Data.SqlClient" />
为什么会发生这种错误?
答案 0 :(得分:0)
问题是Startup.Auth.cs继续引用默认的IdentityDbContext<User>
数据库上下文。更新课程以引用我的ApplicationDBContext
后,问题就解决了。
static Startup()
{
...
UserManagerFactory = () => new UserManager<User>(new UserStore<User>(new ApplicationDBContext()));
...
}