4
respostas

Centralizar o EF em um projeto Class Library

Crei uma solução com dois projetos:

  1. Class Library: com EF Core instalado, entidades criadas, mapeamento do banco de dados e classes DAO para retornar as consultas do banco de dados

  2. Console Application: utiliza instâncias das classes DAO para obter os dados do banco de dados.

Eu criei tudo, adicionei no projeto Console Application a referência ao projeto Class Library, mas ao tentar recuperar os dados pela método da classe DAO a mensagem de erro abaixo é apresentada:

System.IO.FileNotFoundException: Não foi possível carregar arquivo ou assembly 'System.ComponentModel.Annotations, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ou uma de suas dependências. O sistema não pode encontrar o arquivo especificado.

Minha dúvida é se preciso obrigatoriamente instalar o EF Core também no projeto Console Application? Perguntou isso porque encontrei outro post no fórum (https://cursos.alura.com.br/forum/topico-filenotfoundexception-system-componentmodel-annotations-68531) que o aluno estava com o mesmo problema e resolveu instalado o EF no projeto de apresentação.

A intenção de criar o projeto Class Library para centralizar a camada de dados é poder reutilizá-la em outros projetos, visto que posso adicionar novos projetos a solução e referenciar o projeto Class Library, onde as entidades já estão mapeadas.

4 respostas

Tenta instalar e vê se funciona.

Instalar o EF no projeto Console Application resolve, mas minha dúvida é por que é obrigatório instalar o EF nos dois projetos, uma vez que as entidades estão mapeadas e configuradas no projeto Class Library.

Estou sem ideias, decisão da Microsoft? , não sei, preciso estudar mais sobre esse assunto. Algum instrutor poderia nos ajudar a chegar nessa solução?

Pois é... Achei que, ao ter um projeto Class Library com o EF Core instalado, os outros projetos da solução poderiam utilizar sem problema após adicionar a referência do projeto.