ASP.NET Core - Persistence com MongoDB
Neste artigo será apresentado uma estratégia de persistence, real, que pode ser usada para quebrar o acoplamento entre a persistência do MongoDB com as Models do domínio.
Separação de Conceitos
A maneira mais fácil de adicionar a persistência do MongoDB é decorando uma Model. É uma abordagem simples e fácil. Porém não é a unica.
Se o projeto tem a necessidade de uma arquitetura mais robusta é comum separar a Model da Persistence.
Exemplo 1 - Serialization Attributes
O jeito mais comum e mais simples pode ser representado pelo seguinte exemplo:
Usando essa abordagem, é possível persistir facilmente esse modelo no MongoDB. Detalhes importantes a serem observadas:
- O atributo
BsonId
é obrigatório ao adicionar um registro à coleção do Mongo. - O
BsonRequired
informa ao Mongo campos obrigatórios. Garantindo a consistencia do dado.
Exemplo 2 - Criando um arquivo de mapeamento
O exemplo anterior existe um alto acoplamento entre a Model do Dominio com os Attributes de Persistence do MongoDB e é exatamente o que arquiteturas robustas buscam não fazer.
Para contornar este problema pode ser criado um arquivo de mapeameamento:
Usando essa abordagem, o modelo de domínio é completamente independente da layer de persistência. O método ClienteMap.Configure()
pode ser chamado a partir do seu arquivo Startup.cs. Para que todos os mapeamentos sejam configurados assim que o app for carregado.
Extras - ASP.NET Core
Uma maneira eficiente de Inicializar a configuração da Persistence é no Startup.cs do projeto ASP.NET Core.
Primeiro crie uma classe que centralize todos os arquivos de Mapping:
E depois basta chamar o método MongoDbPersistence.Configure()
no Startup.cs