我正在使用Entity Framework Core 2.1,并且有一个类,
search(terms: Observable<string>) {
return terms.debounceTime(400)
.distinctUntilChanged()
.switchMap(term => this.searchEntries(term));
}
searchEntries(term) {
return this.http
.get(this.baseUrl + this.queryUrl + term)
.map(res => res.json());
}
User表是1和相同数据库的一部分。在Entity User类中,它定义为
public class MyDbContext : IdentityDbContext<User>
运行并致电public class User : IdentityUser
时,出现以下错误:
IdentityUser IdentityDbContext <>获取IdentityUserLogin需要定义主键。
我搜索了某人的文章,并阅读了其解决方案的文章。他说要使用以下构造函数
userManager.FindByNameAsync(model.Username)
在我的构造函数中,我按如下方式传递连接器字符串
public DXContext(): base("name=DXContext")
{
Database.SetInitializer<DXContext>(null);// Remove default initializer
Configuration.ProxyCreationEnabled = false;
Configuration.LazyLoadingEnabled = false;
}
我在SetInitializer方法上遇到构建错误,如下所示:
DatabaseFacade不包含SetInitializer的定义。
我们将为解决public MyDbContext()
{
}
// context being added and passing to connection string to use
public MyDbContext(DbContextOptions<ASLDbContext> options) : base(options)
{
// Database.SetInitializer<MyDbContext>(null);
}
主键问题提供任何帮助。
答案 0 :(得分:0)
更新您的startup.cs
用户AddDefaultIdentity<User>()
而不是AddDefaultIdentity<IdentityUser>
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<User>()
.AddEntityFrameworkStores<MyDbContext>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
您的DbContext
可以这么简单
public class MyDbContext : IdentityDbContext<User>
{
public MyDbContext(DbContextOptions<MyDbContext> options)
: base(options)
{
}
}
您的扩展用户类别
public class User : IdentityUser
{
public string SomeAdditionalProperty { get; set; }
}
_LoginPartial.cshtml
将IdentityUser
更改为您的User
类。
@inject SignInManager<User> SignInManager
@inject UserManager<User> UserManager
从内置内置身份验证的全新项目开始,这4项更改是使Identity在基础User
上使用扩展类(IdentityUser
)所需的全部操作。