我正在使用Entity Framework Core 2.1,我有一个类,
public class MyDbContext : IdentityDbContext<User>
User表是1和同一数据库的一部分 . 在Entity User类中,它被定义为
public class User : IdentityUser
当我运行并调用 userManager.FindByNameAsync(model.Username)
时,出现以下错误:
IdentityUser IdentityDbContext <>获取IdentityUserLogin需要定义主键 .
我用谷歌搜索并阅读某人关于可能的解决方案的文章 . 他说要使用以下构造函数
public DXContext(): base("name=DXContext")
{
Database.SetInitializer<DXContext>(null);// Remove default initializer
Configuration.ProxyCreationEnabled = false;
Configuration.LazyLoadingEnabled = false;
}
在我的构造函数中,我传递连接器字符串如下
public MyDbContext()
{
}
// context being added and passing to connection string to use
public MyDbContext(DbContextOptions<ASLDbContext> options) : base(options)
{
// Database.SetInitializer<MyDbContext>(null);
}
我在SetInitializer方法上遇到如下构建错误:
DatabaseFacade不包含SetInitializer的定义 .
任何帮助将不胜感激,以解决 IdentityUserLogin
主键问题 .
1 回答
更新
startup.cs
用户AddDefaultIdentity<User>()
而不是AddDefaultIdentity<IdentityUser>
你的
DbContext
可以这么简单您的扩展用户类
_LoginPartial.cshtml
将IdentityUser
更改为User
类 .当从内置身份验证的全新项目开始时,这4个更改是使Identity在基础
IdentityUser
上使用扩展类(User
)所需的全部内容 .