Olá Diego,
o grande problema é que pelos modificadores de acesso disponíveis (private, protected, internal e public), realmente não tem um jeito fácil de garantir com 100% de certeza que mais ninguém além dos DAOs tenham acesso a classe contexto. Muito do uso do DAO vem justamente dele ser um design pattern, ou seja, uma boa prática de programação dentro do mundo de OO. Então saber usar e garantir que apenas os DAOs usam o context parte muito de um "bom senso" do programador, não necessariamente o código força o encapsulamento disso no 100%.
Uma forma que eu chuto de como talvez seja possível fazer o código forçar só os DAOs usarem o contexto, apesar de não gostar muito da ideia pela complexidade que ela adiciona, é dentro da sua Solution ter um projeto específico para os DAOs e contexto. Neste projeto o contexto seria internal
, ou seja, apenas o projeto tem acesso a esta classe, enquanto que os DAOs são public
para que outros projetos possam acessar os seus métodos. Aí bastaria usar este projeto nos outros dentro da Solution.