Usando um Repositório EF com objetos de conexão personalizados?
Estou preso no EF 6 e a documentação é escassa - não resolvendo isso por um dia agora.
Eu tento usar o Code First em um repositório de banco de dados que temos. Devido à inicialização complexa Idevo usar meu próprio método de fábrica para inicializar a subclasse de contexto e eudevo coloque minha própria conexão sql ou faça minha própria fábrica.
A seguinte inicialização de classe:
temos:
public class Repository : DbContext {
static string _connectionString;
static Repository() {
Database.SetInitializer<Repository>(null);
var type = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
_connectionString = ** method to get connection string**
}
public static Repository Create() {
SqlConnection connection = new SqlConnection(_connectionString);
connection.Open();
connection.BeginTransaction(IsolationLevel.ReadCommitted).Commit();
return new Repository(connection);
}
Infelizmente, ele é executado com a seguinte exceção na primeira tentativa de selecionar alguma entidade:
Não foi possível determinar o nome do provedor para a fábrica do provedor do tipo 'System.Data.SqlClient.SqlClientFactory'. Verifique se o provedor ADO.NET está instalado ou registrado na configuração do aplicativo.
Estou totalmente louco para consertar isso.
Meu arquivo de configuração no aplicativo da web em uso lê:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=6.0.0.0" />
</providers>
</entityFramework>
Alguém pode me dizer como consertar isso? Minha alternativa é voltar ao modelo primeiro - mas eu realmente gostaria de experimentar o código primeiro aqui.