2016-12-28 83 views
1

我嘗試學習創建Google+信息認證在Web API從教程hereApplicationDbContext.Create沒有找到

我有類:

public partial class MyApplicationDbContext : DbContext 
{ 
    public MyApplicationDbContext() 
     : base("name=MyApplicationDbContext") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 

    public virtual DbSet<Appointment> Appointment { get; set; } 
    public virtual DbSet<Users> Users { get; set; } 
} 

,我有對象

MyApplicationDbContext db = new MyApplicationDbContext();

我hav e此方法

public void ConfigureAuth(IAppBuilder app) 
    { 
     app.CreatePerOwinContext(db.Create); //line 10 
    } 

IAppBuilder來自OWIN。

我從管線10得到一個信息:

錯誤CS1061「MyApplicationDbContext」不包含一個用於「創建」定義 和沒有擴展方法「創建」接受型的第一 參數「MyApplicationDbContext」可以找到(你是 丟失使用指令或程序集 參考?)BS.HealthCare.Application E:\ BS.HealthCareApplication \ BS.HealthCare.Application \ BS.HealthCare.Application \ Controllers \ UsersController.cs 137 Active

我錯過了什麼?

+1

請問您可以發佈MyApplicationDbContext類嗎? – MadOX

+0

done @madox,希望它有幫助 –

回答

1

我認爲你缺少Create方法:

public class MyApplicationDbContext : DbContext 
    { 
    public MyApplicationDbContext() 
     : base("your_connection_name") 
    { 
    } 

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

編輯:

public partial class MyApplicationDbContext : DbContext 
{ 
    public MyApplicationDbContext() 
     : base("name=MyApplicationDbContext") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 

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


    public virtual DbSet<Appointment> Appointment { get; set; } 
    public virtual DbSet<Users> Users { get; set; } 
} 
0

您需要定義創建方法上的MyApplicationDbContext像

public partial class MyApplicationDbContext : DbContext 
{ 
    public MyApplicationDbContext() 
     : base("name=MyApplicationDbContext") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 

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


    public virtual DbSet<Appointment> Appointment { get; set; } 
    public virtual DbSet<Users> Users { get; set; } 
} 

那麼在你啓動類調用您的MyApplicationDbContext上的Create方法,如

public void ConfigureAuth(IAppBuilder app) 
{ 
    app.CreatePerOwinContext(MyApplicationDbContext.Create); 
}