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());
我正在尝试使用 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
的自定义用户 classpublic 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());