Jak zrobić, aby każde repozytorium korzystało z jednego kontekstu aplikacji?
W QuizController i QuestionController ma taką linijkę:
private UnitOfWork unitOfWork = new UnitOfWork();
Skoro w UnitOfWork jest to:
private ApplicationDbContext context = new ApplicationDbContext();
to tworząc instancję klasy UnitOfWork za każdym razem jest tworzony nowy kontekst, żeby temu zapobiec to cała klasa UnitOfWork powinna być np. singletonem? Czy może jestem w błędzie?
using System;
using WebQuiz.Models;
namespace WebQuiz.DAL
{
//All repositories share the same context instance
public class UnitOfWork : IDisposable
{
private ApplicationDbContext context = new ApplicationDbContext();
private IQuizRepository quizRepository;
private IQuestionRepository questionRepostiory;
public IQuizRepository QuizRepository
{
get
{
if (this.quizRepository == null)
{
this.quizRepository = new QuizRepository(context);
}
return quizRepository;
}
}
public IQuestionRepository QuestionRepository
{
get
{
if (this.questionRepostiory == null)
{
this.questionRepostiory = new QuestionRepository(context);
}
return questionRepostiory;
}
}
public void Save()
{
context.SaveChanges();
}
private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
context.Dispose();
}
}
this.disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
}