那里有没有知道如何在运行时更改数据库连接的.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”键的连接字符串......
想法?
答案 0 :(得分:2)
你现在可能已经想到了这一点,但万一你还在努力......
我们在当前项目中有动态连接,您发布的代码对我来说很好。
但我认为你仍然需要从提供者配置部分引用web.config中注册的连接字符串。因此,取消注释连接字符串,然后将提供程序部分更改为引用“netTiersConnectionString”而不是“localDynamic”。
netTiers应该忽略这一点并在运行时使用localDynamic。
此外,确保在应用程序启动时为每个连接字符串运行一次DataRepository.AddConnection方法。我们在Global.asax的Application_Start方法中运行我们的