刷新数据源和连接字符串

时间:2016-01-08 11:46:37

标签: c# entity-framework oracle11g

目前我在我的应用程序中使用EF 5和Oracle ManagedDataAccess。我创建了一个小工具,使用户能够在应用程序运行时配置数据库连接。它们使用WCF SOAP进行通信。所以主要是对应用程序的更改。

但是,一旦EF能够连接,我就无法刷新数据源。连接字符串能够刷新,但不能刷新数据源。

public Entities(): base("name=MyEntities")
{
}

public UnitOfWork()
{
    _context = new Entities();
    var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    var connection = config.ConnectionStrings.ConnectionStrings["Entities"].ConnectionString;
    var connString = new EntityConnectionStringBuilder(connection);
    context.Database.Connection.ConnectionString = connString.ProviderConnectionString;
}

我的App.config看起来像

<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </configSections>
    <connectionStrings>
      <add name="Entities" connectionString="metadata=res://*/Mapping.Models.csdl|res://*/Mapping.Models.ssdl|res://*/Mapping.Models.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string=&quot;data source=datasource1;password=123;persist security info=True;user id=user123&quot;" providerName="System.Data.EntityClient" />
    </connectionStrings>
  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <dataSource alias="datasource1" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=W2K8R2o11G020)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=PCMS))) " />
      </dataSources>
    </version>
  </oracle.manageddataaccess.client>
</configuration>

一旦_context建立并且能够连接到数据库,就无法通过我的小工具更改数据源。我仍然设法使用我的小工具更改用户名和密码,但不是数据源(主机名,端口,服务名称)。 我尝试使用OracleConnection.ClearAllPools(),但它不能正常工作。尝试每次强制新连接,而不是工作。

还有其他方法可以实现吗?

0 个答案:

没有答案