I use entity framework 6 and try to overwrite the connection string factory.
I've written the following connection factory:
internal class MyDBConnectionFactory : IDbConnectionFactory
{
public System.Data.Common.DbConnection CreateConnection(string nameOrConnectionString)
{
SAConnection connection = new SAConnection(ConnectionManager.GetConnectionString(nameOrConnectionString ?? "Default"));
return connection;
}
}
Than i have written my own configuration class:
public class MyDbConfiguration : DbConfiguration
{
public MyDbConfiguration()
{
// Set provider
SetProvider();
// Connection-Information
SetConnectionInformation();
}
private void SetProvider()
{
DbProviderServices provider = new iAnywhere.Data.SQLAnywhere.SAProviderServices();
this.SetProviderServices("iAnywhere.Data.SQLAnywhere", provider);
}
private void SetConnectionInformation()
{
this.SetDefaultConnectionFactory(new MyDBConnectionFactory());
}
}
Finally i have added the configuration to the db-context:
[DbConfigurationType(typeof(MyDbConfiguration))]
public class TestDbContext : DbContext
{
}
My problem is, that CreateConnection
in MyDBConnectionFactory
will never be called and i get the following error message: The underlying provider failed on Open.
Why does my connection will never be created?
Maybe some one has a solution, that would be perfect, thank you.
It is important that the configuration section in the app.config does not exists, because it has a higher priority.