ASP.net 使用 OwinContext 的身份自定义表

ASP.net Identity Custom Tables using OwinContext

我正在尝试使用 Entity framework 6.

在 SQL 服务器数据库中实现自定义表以存储 users/roles 等

我创建了一个派生自 IdentityDbContext 的基础 DbContext

 public class MainContext : IdentityDbContext<ApplicationUser>
 {
    public MainContext()
        : base("name=Main")
    {
    }

    public static MainContext Create()
    {
        return new MainContext();
    }
  }

我还有一个继承了 IdentityUser

的自定义用户 class
public class ServiceUser : IdentityUser{

}

在 ConfigureAuth 中,默认代码是:

public void ConfigureAuth(IAppBuilder app)
        {                
            app.CreatePerOwinContext(ApplicationDbContext.Create);
            app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
            app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

 ..
}

当我尝试以下操作时,我希望能够在此处使用我的 MainContext 而不是 ApplicationDBContext

app.CreatePerOwinContext(MainContext.Create());

我收到一个错误

'The type arguments for method 'Owin.AppBuilderExtensions.CreatePerOwinContext(Owin.IAppBuilder, System.Func)' cannot be inferred from the usage. Try specifying the type arguments explicitly. '

考虑到默认的 ApplicationDbContext 看起来像:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("Main", throwIfV1Schema: false)
        {
        }

        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
    }

我看不出有什么不同会导致此错误?

试试

app.CreatePerOwinContext<IdentityDbContext>(MainContext.Create);

愚蠢的错误,应该是

app.CreatePerOwinContext(MainContext.Create);

而不是

app.CreatePerOwinContext(MainContext.Create());