Se fosse o framework de injeção usado no .net core ai sim seria necessário declarar os DAOs também. Mas no .net framework usando especificamente o NInject em teoria não precisaria, dado que o NInject já consegue fazer as injeções sem você precisar declarar no NinjectWebCommon. A necessidade de se declarar o DBContext é por conta que você pode receber diferentes DAOs no controller, sendo que cada DAO terá que receber o DBContext
//Controller
public MovimentacaoController(MovimentacaoDAO movimentacaoDAO, UsuarioDAO usuarioDAO)
{
this.movimentacaoDAO = movimentacaoDAO;
this.usuarioDAO = usuarioDAO;
}
Por default, se você não declarar nada no NinjectWebCommon, para cada DAO o NInject criaria um contexto específico. Ou seja, 2 contextos são abertos para se trabalhar com este Controller. Só que no caso poderia se usar apenas 1 comum para ambos os DAOs. Para fazer isso, temos que definir que ao instanciar o DBContext ele será InRequestScope
, ou seja, apenas 1 contexto criado para cada requisição:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<DBContext>().ToSelf().InRequestScope(); //para cada requisição abra apenas um DBContext e use o mesmo em até o fim dela
}