2014-11-27 3 views
1

vNext 프로젝트를 시작하고 있는데 문제가 발생합니다. ApplicationDbContext 클래스에 테이블을 추가하고 db (이 경우 Azure에 있음) 테이블을 성공적으로 만들었습니다. 그러나 올바르게 컨트롤러에서 사용할 dbContext 인스턴스를 만들 수 없습니다.ASP.NET vNext EF7 dbContext 문제

이전 ASP.NET EF 프로젝트에서 사용한 경험에 따르면 매개 변수를 전달하지 않고도 ApplicationDbContext 클래스를 인스턴스화 할 수 있었지만 vNext의 경우에는 여러 가지가 예상됩니다 (IServiceProviderIOptionsAccessor<DbContextOptions>). 매개 변수가없는 생성자를 만들려고 시도했지만 App은 사용할 연결 문자열을 모르기 때문에 중단됩니다. 내 코드는 아래에 있습니다 - OnConfiguring(DbContextOptions options) 무시에서 볼 수 있듯이 DbContextOptions을 통해 연결 문자열을 강제로 넣지 만 이상적이지는 않습니다. 그 두 문자가 어디인지 이해하지 못하고있는 것 같습니다. IServiceProvider 및 IOptionsAccessor 매개 변수는 와라.

도움 주셔서 감사합니다.

namespace Project.Models 
{ 
    // Add profile data for application users by adding properties to the ApplicationUser class 
    public class ApplicationUser : IdentityUser 
    { 
     public string CompanyName { get; set; } 
    } 

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
    { 
     private static bool _created = false; 

     public DbSet<Business> Businesses { get; set; } 

     public ApplicationDbContext() 
      : base() 
     { 
      if (!_created) 
      { 
       Database.EnsureCreated(); 
       _created = true; 
      } 
     } 

     protected override void OnConfiguring(DbContextOptions options) 
     { 
      var configuration = new Configuration(); 
      configuration.AddJsonFile("config.json"); 
      configuration.AddEnvironmentVariables(); 
      options.UseSqlServer(configuration.Get("Data:DefaultConnection:ConnectionString")); 
     } 

     public ApplicationDbContext(IServiceProvider serviceProvider, IOptionsAccessor<DbContextOptions> optionsAccessor) 
      : base(serviceProvider, optionsAccessor.Options) 
     {    
      // Create the database and schema if it doesn't exist 
      // This is a temporary workaround to create database until Entity Framework database migrations 
      // are supported in ASP.NET vNext 
      if (!_created) 
      { 
       Database.EnsureCreated(); 
       _created = true; 
      } 
     } 
    } 
} 
+0

[전통 .NET 응용 프로그램에서 사용 EF7을 (https://github.com/aspnet/EntityFramework/wiki/Using-EF7-in-Traditional-.NET-Applications) 도움이 될 수 있습니다 너 조금. – Ricky

답변