.nettiers在运行时更改连接

时间:2011-11-10 21:52:31

标签: .net .nettiers

那里有没有知道如何在运行时更改数据库连接的.netTiers忍者?

我在他们的文档中找到了以下文章: http://www.nettiers.net/DataLayer.ashx

最后,它有一个代码片段演示如何执行此操作,但我完全按照此片段进行操作,但它似乎仍无法正常工作。

这是我的代码(名称已被更改以保护无辜者: - ):

DataRepository.AddConnection("localDynamic", "Data Source=myserver;Initial Catalog=myDB;Integrated Security=True");

TList<Patient> patients = DataRepository.Connections["localDynamic"].Provider.PatientProvider.GetAll();

这里是web.config - web配置中的连接字符串被注释掉,以便我可以测试动态更改连接字符串:

<configuration>
  <configSections>
    <section name="dcPlatinum.Data"
    type="dcPlatinum.Data.Bases.NetTiersServiceSection, dcPlatinum.Data"
    allowDefinition="MachineToApplication"
    restartOnExternalChanges="true" />
  </configSections>
  <!--<connectionStrings>
    <add name="netTiersConnectionString" connectionString="Data Source=myServer;Initial Catalog=myDB;Integrated Security=True" />
  </connectionStrings>-->

  <dcPlatinum.Data defaultProvider="SqlNetTiersProvider">
    <providers>
      <add
        name="localDynamic"
        type="dcPlatinum.Data.SqlClient.SqlNetTiersProvider, dcPlatinum.Data.SqlClient"
        connectionStringName="localDynamic"
        providerInvariantName="System.Data.SqlClient"
        entityFactoryType="dcPlatinum.Entities.EntityFactory"
        useEntityFactory="true"
        enableEntityTracking="false"
        enableMethodAuthorization="false"
        useStoredProcedure="false"

        />
    </providers>
  </dcPlatinum.Data>
  <system.web>
      <compilation debug="true" targetFramework="4.0" />
  </system.web>

</configuration>

正在发生的问题是它没有找到带有“localDyanmic”键的连接字符串......

想法?

1 个答案:

答案 0 :(得分:2)

你现在可能已经想到了这一点,但万一你还在努力......

我们在当前项目中有动态连接,您发布的代码对我来说很好。

但我认为你仍然需要从提供者配置部分引用web.config中注册的连接字符串。因此,取消注释连接字符串,然后将提供程序部分更改为引用“netTiersConnectionString”而不是“localDynamic”。

netTiers应该忽略这一点并在运行时使用localDynamic。

此外,确保在应用程序启动时为每个连接字符串运行一次DataRepository.AddConnection方法。我们在Global.asax的Application_Start方法中运行我们的