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