Uma aplicação web onde psicoterapeutas especializados em sua área podem responder às perguntas que lhes são feitas nesta plataforma.
Eu usei:
Edifício Arquitetônico
O projeto consiste em duas camadas. Camada de Persistência, que está associada ao Banco de Dados, e Camada Core, que não está associada ao Banco de Dados
Controlador => Núcleo <= Persistência
Podemos falar sobre um diagrama de dependência como este. A camada principal contém classes de interface. A persistência contém as classes nas quais defino essas interfaces. No lado do Controller, usei a classe UnitOfWork para reduzir a dependência do Controller DBContext . No entanto, embora o controlador fosse uma camada de alto nível , ele estava fortemente acoplado ao UnitOfWork, uma camada de baixo nível . Usei a classe IUnitOfWork para isso. IUnitOfWork define uma classe completamente abstrata que contém IRepository's. Então tornei a classe UnitOfWork dependente da classe IUnitOfWork . Da mesma forma, criei uma dependência entre a camada Controller e IUnitOfWork .
Controlador => IUnitOfWork <= UnitOfWork
Agora a camada de alto nível Controller depende de uma classe Abstract. Da mesma forma, em UnitOfWork, que é uma classe detalhada e de baixo nível, Abstrack tornou-se dependente de uma classe. Na verdade, o que fiz foi tornar a camada central completamente independente. A testabilidade do aplicativo aumentou. Além disso, a Camada Core possui uma estrutura independente do Framework ORM. A alteração a ser feita em UnitOfWork não afetará a camada IUnitOfWork.
Por outro lado, na aplicação, a dependência DbContext ainda continuava na camada UnitOfWork . Isso causou indiretamente o problema fortemente acoplado Controller - DbContext . Usei um framework de injeção de dependência para resolver isso. (Ninject 3.2.1.0)