2017-05-03 4 views
0

.Net Core 응용 프로그램을 실행할 때 오류가 발생합니다. DbContext에 액세스하면이 팝업이 나타납니다.System.InvalidOperationException : DbContext에 액세스 할 때

System.InvalidOperationException : '이 DbContext에 대해 데이터베이스 공급자가 구성되지 않았습니다. DbContext.OnConfiguring 메서드를 재정의하거나 응용 프로그램 서비스 공급자에서 AddDbContext를 사용하여 공급자를 구성 할 수 있습니다. AddDbContext가 사용되면 DbContext 형식이 해당 생성자에서 DbContextOptions 개체를 수락하고 DbContext의 기본 생성자에 전달하는지 확인하십시오. '

나는 그것을 고치려고했지만 여전히 오릅니다.

DbContext.cs

public class PartsDbContext : DbContext 
{ 
    public DbSet<Tower> Towers { get; set; } 
    public DbSet<Motherboard> Motherboards { get; set; } 

    public PartsDbContext(DbContextOptions<PartsDbContext> options) 
     : base(options) 
    { 
    } 
} 

Controller.cs가

public class AdminController : Controller 
{ 
    private readonly PartsDbContext _context; 

    public AdminController(PartsDbContext context) 
    { 
     _context = context; 
    } 
    public IActionResult Index() 
    { 
     if (User.Identity.Name == null) 
     { 
      return RedirectToAction("Register", "Account"); 
     } 
     return View(); 
    } 

    public IActionResult Towers() 
    { 
     var model = _context.Towers.ToList(); 
     return View(model); 
    } 

    public IActionResult Motherboards() 
    { 
     var model = _context.Motherboards.ToList(); 
     return View(model); 
    } 
} 

오류 타워이 라인()

var model = _context.Towers.ToList(); 
,745에 나타나

Startup.cs는

public void ConfigureServices(IServiceCollection services) 
{ 
    // Add framework services. 
    services.AddDbContext<ApplicationDbContext>(options => 
     options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); 

    services.AddIdentity<ApplicationUser, IdentityRole>() 
     .AddEntityFrameworkStores<ApplicationDbContext>() 
     .AddDefaultTokenProviders(); 

    services.AddEntityFramework() 
     .AddDbContext<PartsDbContext>(); 

    services.AddMvc(); 

    // Add application services. 
    services.AddTransient<IEmailSender, AuthMessageSender>(); 
    services.AddTransient<ISmsSender, AuthMessageSender>(); 
} 

어떤 도움도 좋을 것이다. 나는 틀린 일을하고 있다고 확신하지만, 나는 오류가 암시하는 모든 것을 다했다고 믿는다.

감사합니다.

+0

는 당신이 실제로 가지고하셨습니까'DefaultConnection' :

services.AddDbContext<PartsDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")); ) 

더 많은 정보 :

그래서,이 줄을 추가? –

+0

App.config가 없습니다. ASP.Net Core 1.1을 사용하고 있는데 App.config를 사용한다고 생각하지 않습니다. –

+0

아, 죄송합니다. 'appsettings.json'. https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-strings#aspnet-core –

답변

0

현재 Startup.cs 파일은 하나의 DB (ApplicationDBContext)에 대해 DB 제공자를 구성했지만 사용중인 어댑터 (PartsDbContext)는 구성하지 않았습니다. 당신의`App.config` 구성 https://docs.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext#using-dbcontext-with-dependency-injection

+0

내가이는 엔티티 프레임 워크가되도록 DB 공급자를 구성 할 생각이라고 생각 : services.AddEntityFramework() . AddDbContext (); –

+0

@ JoeHigley, Entity Framework는 ORM이며 db 공급자는 아닙니다. DB 공급자가 SQL, mySql, Oracle 등입니다. –

+0

게시 된 문제가 해결되었습니다. 그러나 이제 Entity Framework에서 테이블을 생성하지 않는 문제가 발생합니다. 이전과 같은 줄에서이 메시지 대신 오류가 발생합니다. System.Data.SqlClient.SqlException : '잘못된 개체 이름'Towers '.' –