gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:11:27 29 4
gpt4 key购买 nike

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

private readonly IDbSet<TUserLogin> _logins;
private readonly EntityStore<TRole> _roleStore;
private readonly IDbSet<TUserClaim> _userClaims;
private readonly IDbSet<TUserRole> _userRoles;
private EntityStore<TUser> _userStore;

类型参数TUser被限制为 IdentityUser<TKey, TUserLogin, TUserRole, TUserClaim> ,并且这种类型有自己相似的集合集:

public virtual ICollection<TRole> Roles { get; private set; }
public virtual ICollection<TClaim> Claims { get; private set; }
public virtual ICollection<TLogin> Logins { get; private set; }

如果我只需要管理一个存储库,即 TUser,我的生活会轻松得多,因为这些用户中的每一个都已经处理好自己的事情了。有什么重要的原因我不能只取消这些(为了取消对 Entity Framework 的任何依赖,比如 DbSet

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

最佳答案

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

如果您要完全转换 Identity 框架(并且速度很快),您将需要这些数据库实体来管理这些数据。

但是,您可以拥有一个单独的用户 存储库,该存储库公开对他们的声明、角色和登录的访问权限,以使其更简单一些。

关于c# - 为什么 ASP.NET Identity 的 `UserStore` 中有这么多存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34272394/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com