Uso il framework 6 dell'entità e provo a sovrascrivere la factory della stringa di connessione.
Ho scritto il seguente factory di connessione:
internal class MyDBConnectionFactory : IDbConnectionFactory
{
public System.Data.Common.DbConnection CreateConnection(string nameOrConnectionString)
{
SAConnection connection = new SAConnection(ConnectionManager.GetConnectionString(nameOrConnectionString ?? "Default"));
return connection;
}
}
Di quanto ho scritto la mia classe di configurazione:
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());
}
}
Finalmente ho aggiunto la configurazione al contesto db:
[DbConfigurationType(typeof(MyDbConfiguration))]
public class TestDbContext : DbContext
{
}
Il mio problema è che CreateConnection
in MyDBConnectionFactory
non verrà mai chiamato e ricevo il seguente messaggio di errore: Il provider sottostante non è riuscito su Apri.
Perché la mia connessione non verrà mai creata?
Forse qualcuno ha una soluzione, sarebbe perfetto, grazie.
È importante che la sezione di configurazione in app.config non esista, poiché ha una priorità più alta.