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’]