コンテキストに引数はありません

asp.net-core asp.net-mvc c# entity-framework entity-framework-core

質問

私はasp core リポジトリパターンを実装しようとしています 。コントローラに追加する点を除いて、いくつかの調整を加えればすべてうまくいくようです。

    public class HomeController : Controller
    {
        private IDocumentRepository _context;

        public HomeController()
        { 
            _context = new DocumentRepository(new myContext());
        }
}

DocumentRepository.cs

public class DocumentRepository : IDocumentRepository, IDisposable
{

    private myContext context;

    public DocumentRepository(myContext context) : base()
    {
        this.context = context;
    }

    public IEnumerable<Document> GetDocuments()
    {
        return context.Document.ToList();
    }

    public Document GetDocumentByID(int id)
    {

        return context.Document.FirstOrDefault(x => x.Id == id);
    }

IDocumentRepository.cs

public interface IDocumentRepository : IDisposable
{
    IEnumerable<Document> GetDocuments();
    Document GetDocumentByID(int documentId);
    void InsertDocument(Document student);
    void DeleteDocument(int documentID);
    void UpdateDocument(Document document);
    void Save();
}

エラー

必要な仮パラメータ 'options' of 'myContext.myContext(DbContextOptions)dotnetcore..NETCoreApp、Version = v1.0に対応する引数はありません

受け入れられた回答

IDocumentRepositoryを手動でインスタンス化するのではなく、コンストラクタ注入を使用してDIコンテナから解決するだけで動作します。

public class HomeController : Controller  {
    private IDocumentRepository _repository;

    public HomeController(IDocumentRepository repository) { 
        _repository = repository;
    }
}

そのためには、 IDocumentRepositoryConfigureServices正しく登録されていることを確認する必要があります。

public void ConfigureServices(IServiceCollection services) {
    services.AddScoped<IDocumentRepository, DocumentRepository>();
}


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ