2

ASP.Net 코어 :등록 일반적인 EntityFrameworkCore DbContext에서 내가 그러나 나는 점점 오전 오류 다음 <code>ASP.Net Core 1.0</code>에서 일반적인 DbContext를 사용하려고 1.0

여기
ArgumentException: Type 'idmin.data.IdminDataContext`1[System.Int32]' does not have a default constructor Parameter name: type 

이 IdminDataContext가 정의하는 방법입니다

public class IdminDataContext<TKey> : DbContext where TKey : IEquatable<TKey> 
{ 

    public IdminDataContext(DbContextOptions<IdminDataContext<TKey>> options) : base(options) 
    { 
    } 

    public DbSet<Idmin.Models.Client<TKey>> Clients { get; set; } 
} 

시작 클래스에 등록하는 방법은 다음과 같습니다.

public void ConfigureServices(IServiceCollection services) 
{ 
    var connection = "my connection string"; 
    services.AddDbContext<IdminDataContext<int>>(options => options.UseSqlServer(connection)); 

    services.AddMvc(); 
} 

IdminDataContext 클래스에 기본 생성자를 추가하려고했지만 도움이되지 않았습니다. 내가 여기에 무엇을 놓치고 있는지 알 수 있습니까?

답변

3

문제가 발견되었습니다. 그것은 내 바보 같은 실수였다. 컨트롤러에서 생성자 삽입을 사용하는 대신 Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ComplexTypeModelBinder의 CreateModel 메서드에서 예외를 발생시키는 작업 메서드 삽입을 사용하고있었습니다. 액션 메소드 삽입 대신 의존성 주입을 생성자로 이동하여이 문제를 해결했습니다.

+0

나는 동일한 문제가있었습니다. 내 인터페이스를 컨트롤러 동작 (색인)에 주입 시켰습니다. 이제 컨트롤러에 생성자를 추가하고 거기에 인터페이스를 삽입하면 작동합니다. 그러나 나는 행동 방법 주입에 무엇이 잘못되었는지 이해하지 못한다. –