Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

EF Core e MVC Core em projetos separados

Bom dia. Poderiam me dar alguma dica de como usar EF Core e MVC Core em projetos separados? Ex: Um biblioteca de classes para o EF Core de acesso ao banco separado do projeto web.

E mais uma coisa como eu poderia tratar o caso de acessar mais de um banco de dados no mesmo projeto Web? Como ficariam as strings de conexão e etc?

Obrigado

2 respostas
solução!

Opa, Bruno. Tudo bom?

Você pode separar seu código em alguns projetos separados:

  • MeuProjeto.Core: projeto sem dependências usado pelos outros da solução, define classes abstratas e interface de repositório;
  • MeuProjeto.Domain: projeto com os modelos, validação, etc.
  • MeuProjeto.Data: projeto com o EntityFramework, aqui implementamos as interfaces em MeuProjeto.Core usando o EFCore e fazemos o mapeamento para os modelos em MeuProjeto.Domain;
  • MeuProjeto.Web: Projeto MVC. Aqui você vai ter a referência aos outros projetos da solução. Suas controllers irão depender das interfaces em MeuProjeto.Core ou MeuProjeto.Domain, mas a injeção de dependência vai devolver as implementações em MeuProjeto.Data. De qualquer modo, você vai precisar de uma referência ao EFCore neste projeto, para usar no Startup da aplicação.

Como exemplo desta arquitetura, você pode dar uma olhada no projeto Equinox, um projeto criado pelo Eduardo Pires, mostrando as boas práticas em projetos do mundo .NET.

Além disso, tenho outro exemplo mais simples que é o Alura-CasaDoCodigo, um projeto que criei para um curso daqui da Alura.

Sobre acessar vários bancos, você vai precisar criar mais de um DbContext e, no AppSettings, pode adicionar várias connectionStrings. Por exemplo:

"ConnectionStrings": {
  "Connection_RH": "Data Source=Srv1;Database=Db1;<etc.>",
  "Connection_Vendas": "Data Source=Srv2;Database=Db2;<etc.>"
}

O que você acha? Isso te ajuda?

Abs e bons estudos.

Opá. Vai me ajudar bastante. Muito obrigado.