Solução: Entity Framework 5 + Class Library + Erro de string de conexão

entityframeworkOlá pessoal, tudo bom?

Para quem vinha trabalhando com o Entity Framewok 4 e passou a utilizar a versão 5, deve ter notado algumas diferenças entre elas. A maioria das diferenças que encontrei foram positivas, mas certa vez me deparei com uma situação que infelizmente tive que considerar como negativa.

A situação ocorre quando criamos o modelo conceitual em um projeto do tipo Class Library e depois tentamos utiliza-lo em outros projetos do tipo ASP.NET, Windows Form, etc. O problema a que me refiro neste post é em relação à seguinte mensagem de erro:

No connection string named ‘xxxx’ could be found in the application config file.

No meu ponto de vista, o problema está relacionado à impossibilidade, de na versão 5, podermos passar a string de conexão como parâmetro no momento da criação do contexto. Veja abaixo:

Na versão 4, fazíamos assim:


public partial class Curso
{
  public int Adicionar()
  {
    using (AcademicoEntities contexto = new AcademicoEntities(Util.StringConexao))
    {
      try
      {
        contexto.Curso.Add(this);
        return contexto.SaveChanges();
      }
      catch
      {
        return -1;
      }
    }
  }
}

Repare que na versão 4 há a possibilidade de passar a string de conexão por parâmetro no momento da instância do contexto do EF, coisa que na versão 5, curiosamente, foi retirada.

Bem, para voltarmos a ter essa característica na versão 5 do EF, basta que façamos o seguinte:

Supondo que seu modelo conceitual chame-se AcademicoEntities, crie uma classe parcial para esse modelo de tal forma que a mesma fique conforme exemplificado no trecho de código a seguir:

O pulo do gato 😉


//Nome do arquivo: _AcademicoEntities.cs

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EF_ClassLibrary
{
  public partial class AcademicoEntities : DbContext
  {
    public AcademicoEntities(string ConnectionString) : base(ConnectionString) { }
  }
}

Repare que o objetivo da classe é voltar a característica de enviar por parâmetro a string de conexão que desejamos manter associada ao nosso contexto, ou seja, a partir de agora podemos voltar utilizar a declaração do contexto conforme fazíamos no EF4.

Bem, espero ter ajudado!

Grande abraço,
Eduardo Henrique Rizo

Anúncios

Coordenador de Internet da Universidade do Oeste Paulista (Unoeste) e professor universitário de disciplinas relacionadas ao desenvolvimento de sistemas para Web, gerenciamento de servidores, serviços e redes.

Marcado com: , , , , , , , , , , , , , , ,
Publicado em ASP.NET, Entity Framework

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Sorocaba e Região
Prestadora de serviços RIZZO GS - Sorocaba/SP

Serviços de limpeza, conservação, recepção, copa, portaria, vigia, zeladoria, jardim, elétrica, hidráulica, pintura, etc.

Contato: (15) 3357-4263 / (15) 3357-4502 - contato@rizzogs.com.br

Website: http://www.rizzogs.com.br

%d blogueiros gostam disto: