自定义UserStore在Asp . net 5 beta 7



我正试图根据这里提出的想法在Asp .Net 5 beta 7中实现自定义UserStore

下面是我的自定义用户存储的代码:
public class ApplicationUserStore : UserStore<ApplicationUser>
{
    public ApplicationUserStore(DbContext context)
        : base(context)
    {
    }

    public async override Task<ApplicationUser> FindByIdAsync(string userId)
    {
        var user = await base.FindByIdAsync(userId);
        this.Context.Entry(user).Reference(u => u.Subject).Load();
        return user;
    }
}

我在这段代码中遇到两个问题。

  1. 在基类
  2. 中没有FindByIdAsync方法要重写
  3. FindByIdAsync中,没有找到Reference方法

我也不确定如何配置自定义用户存储,一旦我得到它编译。

更新:

我通过将FindByIdAsync重写的定义更改为以下内容解决了第一个问题:

public async override Task<ApplicationUser> FindByIdAsync(string userId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))

第二个问题仍然是个问题。我如何在EF7中指定我希望显式加载ApplicationUser实体的引用属性Subject ?在EF6中,在命名空间System.Data.EntityFramework.Infrastructure中定义了以下内容:

public DbReferenceEntry<TEntity, TProperty> Reference<TProperty>(Expression<Func<TEntity, TProperty>> navigationProperty) where TProperty : class;

EF7中定义的扩展方法在哪里?或者有一个显式加载引用的新方法?

你提到的这个问题很老了,从那时起,Identity已经发生了很多变化。

我可以告诉你,我已经在我的项目中实现了UserStore,而没有使用实体框架,我的类是这样声明的:

public sealed class UserStore<TUser> :
    IUserStore<TUser>,
    IUserPasswordStore<TUser>,
    IUserEmailStore<TUser>,
    IUserLoginStore<TUser>,
    IUserRoleStore<TUser>,
    IUserClaimStore<TUser>,
    IUserPhoneNumberStore<TUser>,
    IUserLockoutStore<TUser>,
    IUserTwoFactorStore<TUser>
   where TUser : SiteUser
{
.. implementation
}

其中SiteUser是我自己的自定义类

您可能还会发现这个问题很有帮助,因为它显示了我如何在DI

中插入自定义userstore

看起来你确实想使用EF,但是如何声明和插入自定义用户库的原则应该是相同的,无论是否依赖EF

相关内容

  • 没有找到相关文章

最新更新