Длина значения для ключа «источник данных» превышает предел «128»

Я знаю, что был задан очень похожий вопросВот, но ответ не помог мне.

Я использую Entity Framework 6 с Oracle.ManagerDataAccess.Client.

Если я определяю строку подключения в app.config, то соединение работает. Если я укажу в коде одинаковую строку подключения, то получу ошибку

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

что правильно.

Это моя строка подключения (некоторые имена удалены):

"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) ) )"

Я знаю, что есть куча пробелов, которые можно удалить, но я все еще не собираюсь опускать строку ниже 128 символов.

Почему это работает, когда строка подключения находится в app.config, но не в коде?

Есть ли какой-нибудь трюк, который я могу использовать, выгружая некоторые параметры в другую строку?

Я уже использую объект DBConfiguration. Есть ли способ установить некоторые параметры в этом объекте?

Если я использую полный клиент оракула, я думаю, что я мог бы ссылаться на конфигурацию в файле tnsnames.ora, но было бы большим плюсом, если бы мы могли общаться с базой данных оракула без полного клиента.

Обновить

Вот как выглядит строка подключения в 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>

В коде я определил класс контекста следующим образом:

[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")) ;
  }
}

Я определил класс DbConfiguration следующим образом:

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 ) ;
  }
}

Наконец, я создаю такой контекст

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 ) ;
  }
}

Строки подключения, используемые в двух методах, идентичны.

Ответы на вопрос(2)

Ваш ответ на вопрос