リポジトリ パターンを使用したい (Unit of Work パターンを使用できることはわかっていますが、ここではリポジトリ パターンを使用したいと思います)。したがって、各リポジトリ クラスには、特定のテーブルに対するクエリがあります。次に例を示します。
public class NotesRepository : INotesRepository, IDisposable
{
private DatabaseContext context;
public NotesRepository(DatabaseContext context)
{
this.context = context;
}
public IQueryable<Notes> GetAllNotes()
{
return (from x in context.Notes
select x);
}
}
そして別のリポジトリの例:
public class CommentsRepository : ICommentsRepository, IDisposable
{
private DatabaseContext context;
public CommentsRepository(DatabaseContext context)
{
this.context = context;
}
public IQueryable<Comments> GetAllComments()
{
return (from x in context.Comments
select x);
}
}
ここで、これら 2 つのリポジトリを 1 つのコントローラーで使用したいと思います。リポジトリ パターンでは、コントローラ コンストラクタでデータベース接続を初期化し、それを各リポジトリに渡します。よろしいですか? 例えば:
public class HomeController : Controller
{
private INotesRepository NotesRepository;
private ICommentsRepository CommentsRepository;
public HomeController()
{
DatabaseContext db = new DatabaseContext();
this.NotesRepository = new NotesRepository(db);
this.CommentsRepository = new CommentsRepository(db);
}
// ........
}