我应该与EnityFramework Core一起使用哪个DbContext?

时间:2018-11-08 16:50:42

标签: c# entity-framework asp.net-core .net-core

我有带有EFCore的.Net Core应用程序。我创建了从IdentityDbContext继承的ApplicationDbContext类。

我想使用AspNetUsers DbSet进行授权和身份验证。然后在powershell控制台中,我输入了“更新数据库”,在PostgreSQL数据库中,我看到了一些表,包括AspNetRoles,AspNetUsers等,但是在项目中,我只有空的ApplicationDbContext。

那我该怎么办?我可以将数据库中的所有实体都放置到对象模型中,或者扩展IdentityDbContext并以某种方式向aspNetUsers添加属性。此外,如果我搭建实体实体,我将获得另一个新的DbContext,其中包含所有AspNetUsers和其他所有AspNetUsers。

1 个答案:

答案 0 :(得分:1)

如果您可以使用IdentityUser的标准实现,则只需从非泛型dbContext继承IdentityDbContext。 如果要使用自定义User类为身份创建dbContext,则需要从通用抽象类IdentityDbContext<T>继承自定义dbContext类,其中T是您对User的自定义实现。此实现应继承自.NET IdentityUser类已提供的内容。 另外,您还需要通过以下代码将dbContext与Startup.cs中的身份相关联:

services.AddIdentity<MyCustomUser, IdentityRole>()
                .AddEntityFrameworkStores<MyCustomSecurityContext>()...

我也不知道您为什么要尝试直接使用Identity上下文。通常,与用户,角色和声明有关的所有工作都是通过特定服务(例如UserManager<MyApplicationUser>)完成的,这些服务隐藏了实现并提供了清晰清晰的API。您可以根据需要将它们注入。