我尝试使用Entity framework 6在SQL Server数据库中实现自定义表来存储用户/角色等。
我创建了一个派生自IdentityDbContext的基础DbContext
public class MainContext : IdentityDbContext<ApplicationUser>
{
public MainContext()
: base("name=Main")
{
}
public static MainContext Create()
{
return new MainContext();
}
}
我还有一个继承IdentityUser的自定义用户类
public class ServiceUser : IdentityUser{
}
在ConfigureAuth中,defualt代码为:
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());
我收到错误
&#39;方法的类型参数 &#39; Owin.AppBuilderExtensions.CreatePerOwinContext(Owin.IAppBuilder, System.Func)&#39;无法从使用中推断出来。尝试指定 类型参数 明确。 &#39;
考虑默认的ApplicationDbContext如下:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("Main", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
我看不出会导致此错误的不同之处?
答案 0 :(得分:4)
尝试
app.CreatePerOwinContext<IdentityDbContext>(MainContext.Create);
答案 1 :(得分:0)
愚蠢的错误,应该是
app.CreatePerOwinContext(MainContext.Create);
而不是
app.CreatePerOwinContext(MainContext.Create());