首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DbContext vs UserManager访问

DbContext vs UserManager访问
EN

Stack Overflow用户
提问于 2018-04-20 19:23:46
回答 2查看 1.4K关注 0票数 4

使用UserManager或DbContext有什么缺点或优点吗?

如果我使用这个:

代码语言:javascript
复制
public class UserManager<TUser> : IDisposable where TUser : class

public virtual Task<TUser> FindByIdAsync(string userId);

或者如果我使用像这样的直接dbcontext:

代码语言:javascript
复制
                var user = dbContext.Users.Where(x => x.Id == model.Id).FirstOrDefault();
// Login like this
 await HttpContext.SignInAsync(..)
EN

回答 2

Stack Overflow用户

发布于 2018-04-20 19:31:12

现在,您可以从数据库中查询用户。如果您决定将身份验证委派给授权服务器,该怎么办?我以前见过这种情况:人们决定创建一个Web API来处理身份验证/授权细节。如果您直接使用DbContext,则必须在使用它的任何地方进行更改。

另一方面,通过使用UserManager,您只需将UserManager的实现更改为使用HttpClient,以使用Web API来查询用户、角色和创建用户身份所需的其他内容。

UserManager通过IUserStore和其他一些接口封装了实现细节。我会避免直接查询任何身份表,即使它是非常试探性的。

票数 4
EN

Stack Overflow用户

发布于 2018-04-20 19:31:55

直接使用Entity Framework的主要缺点是,如果将存储更改为其他存储,则必须更改所有引用。

ASP.NET核心标识允许您通过两个步骤创建自定义存储:

  1. 创建实现所需接口的类

公共类MyStore : IUserStore,... //更多{}

  • 将实体框架存储替换为您的:

//默认services.AddIdentity(...).AddEntityFrameworkStores();//您的services.AddIdentity(...).AddUserStore();

如果您曾经因为业务需求或实体框架核心中不可用的数据存储方法而需要创建自定义存储(或者甚至希望从项目中删除EF核心),那么如果您使用UserManager方法会更好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49940567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档