当前位置:  开发笔记 > 编程语言 > 正文

为什么在ASP.NET Identity的`UserStore`中有这么多的存储库?

如何解决《为什么在ASP.NETIdentity的`UserStore`中有这么多的存储库?》经验,为你挑选了1个好方法。

我即将将Identity的Microsoft.AspNet.Identity.EntityFramework项目(v 2.0.0.0)转换为使用NHibernate作为其持久性机器的项目.我的第一个"绊脚石"是这个类中的一组存储库UserStore:

private readonly IDbSet _logins;
private readonly EntityStore _roleStore;
private readonly IDbSet _userClaims;
private readonly IDbSet _userRoles;
private EntityStore _userStore;

类型参数TUser被约束为IdentityUser,并且此类型具有其自己的类似集合集:

public virtual ICollection Roles { get; private set; }
public virtual ICollection Claims { get; private set; }
public virtual ICollection Logins { get; private set; }

如果我不得不管理一个存储库,那么我的生活将变得更加轻松TUser,因为每个用户都已经处理好自己的东西.是否有任何重要的原因我不能废除这些(为了消除对Entity Framework的任何依赖,比如DbSet

我可以设计我自己的存储库类来代替DbSet符合这种设计UserStore,但我更愿意丢失它们并让每个用户实例处理它自己的声明等.



1> Steve..:

其他DbSet类用于保存与用户声明,角色和登录相关的数据,而ICollection字段是导航属性,允许您通过当前选定的用户从这些表中读取数据.

如果您要完全转换身份框架(以及上帝速度给您),您将需要这些数据库实体来管理这些数据.

但是,您可以使用单个User存储库来公开对其声明,角色和登录的访问,以使其更简单一些.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有