目前我在我的应用程序中使用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="data source=datasource1;password=123;persist security info=True;user id=user123"" 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(),但它不能正常工作。尝试每次强制新连接,而不是工作。
还有其他方法可以实现吗?