Olá 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
[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]