La longitud del valor para la 'fuente de datos' clave excede su límite de '128'

Sé que se ha hecho una pregunta muy similar.aquí, pero la respuesta no me ayudó.

Estoy usando Entity Framework 6 con Oracle.ManagerDataAccess.Client.

Si defino la cadena de conexión en app.config, entonces la conexión funciona. Si especifico una cadena de conexión idéntica en el código, aparece el error

The value's length for key 'data source' exceeds it's limit of '128'.

cual es correcta.

Esta es mi cadena de conexión (con algunos nombres eliminados):

"User Id=xxxxxxxxxxx;Password=xxxx;Data Source=( DESCRIPTION = ( ADDRESS_LIST = ( ADDRESS = (PROTOCOL = TCP)(HOST = VS-ORACLE.xxxxxxx.de)(PORT = 1521) ) ) ( CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl.xxxxxxxx.de) ) )"

Sé que hay un montón de espacios que podrían eliminarse, pero todavía no voy a obtener la cadena por debajo de 128 caracteres.

¿Cómo es que funciona cuando la cadena de conexión está en app.config, pero no cuando está en código?

¿Hay algún truco que pueda usar al descargar algunos de los parámetros a otra cadena?

Ya estoy usando un objeto DBConfiguration. ¿Hay alguna forma de establecer algunos de los parámetros en ese objeto?

Si uso el cliente Oracle completo, supongo que podría hacer referencia a una configuración en el archivo tnsnames.ora, pero sería una gran ventaja si pudiéramos hablar con una base de datos Oracle sin el cliente completo.

Actualizar

Así es como se ve la cadena de conexión en app.config

<connectionStrings>
  <add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=xxxxxxxxxxx;Password=xxxx;Data Source=( DESCRIPTION = ( ADDRESS_LIST = ( ADDRESS = (PROTOCOL = TCP)(HOST = VS-ORACLE.xxxxxxxx.de)(PORT = 1521) ) ) ( CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl.xxxxxxxx.de) ) )" />
</connectionStrings>

En el código, he definido la clase de contexto de la siguiente manera:

[DbConfigurationType(typeof(OracleDBConfiguration))]
public class GlobalAttributeContext : DbContext
{
  public DbSet<GlobalAttribute>  GlobalAttributes { get; set; }

  static GlobalAttributeContext()
  {
    Database.SetInitializer<GlobalAttributeContext>(null);
  }

  public GlobalAttributeContext(string nameOrConnectionString) : base(nameOrConnectionString)
  {
  }

  public GlobalAttributeContext() : this ( "Name=OracleDbContext" )
  {
  }

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    // We have to pass the schema name into the configuration. (Is there a better way?)
    modelBuilder.Configurations.Add(new GlobalAttribute_Config_Oracle("SchemaName")) ;
  }
}

He definido una clase DbConfiguration de la siguiente manera:

class OracleDBConfiguration : DbConfiguration
{
  public OracleDBConfiguration()
  {
    this.SetDefaultConnectionFactory ( new System.Data.Entity.Infrastructure.LocalDbConnectionFactory("v12.0") ) ;
    this.SetProviderServices ( "Oracle.ManagedDataAccess.Client", Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices.Instance ) ;
    this.SetProviderFactory  ( "Oracle.ManagedDataAccess.Client", Oracle.ManagedDataAccess.Client.OracleClientFactory.Instance ) ;
  }
}

Finalmente, creo el contexto así

string ConnectionString = "User Id=xxxxxxxxxxx;Password=xxxx;Data Source=( DESCRIPTION = ( ADDRESS_LIST = ( ADDRESS = (PROTOCOL = TCP)(HOST = VS-ORACLE.xxxxxxxx.de)(PORT = 1521) ) ) ( CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl.xxxxxxx.de) ) )" ;

using (var ctx = new GlobalAttributeContext(ConnectionString))
{
  var globalAttributes = ctx.GlobalAttributes.ToList() ;
  foreach ( GlobalAttribute ga in globalAttributes )
  {
    Console.WriteLine ( "Name: {0}, Value: {1}", ga.Attribute, ga.Value ) ;
  }
}

Las cadenas de conexión utilizadas en los dos métodos son idénticas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta