使用OwinContext的ASP.net标识自定义表

时间:2015-01-05 14:47:09

标签: c# asp.net entity-framework asp.net-identity owin

我尝试使用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();
        }
    }

我看不出会导致此错误的不同之处?

2 个答案:

答案 0 :(得分:4)

尝试

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

答案 1 :(得分:0)

愚蠢的错误,应该是

app.CreatePerOwinContext(MainContext.Create);

而不是

app.CreatePerOwinContext(MainContext.Create());