2

プログラムで動的にサーバーアドレスを設定してデータベースに接続しようとすると、指定したアドレスが正しい場合は正常に動作し、そうでない場合は正常に動作するという問題があります。その後、このアドレスを変更したいのですが、コードで変更してデータベースに再度接続しようとしても、古い構成が記憶されたままで接続できません。変更するにはどうすればよいですか?

私は次のように構成を設定しました:

XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
        foreach (XmlElement element in xmlDoc.DocumentElement)
        {
            if (element.Name.Equals("ideablade.configuration"))
            {
                foreach (XmlNode ele in element.ChildNodes)
                {
                    if (ele.Name == "objectServer")
                    {
                        var node = ele;
                        node.Attributes["remoteBaseURL"].Value = remoteBaseURL;
                        node.Attributes["serverPort"].Value = serverPort;
                        node.Attributes["serviceName"].Value = serviceName;
                    }
                }
            }
        }
        xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
        ConfigurationManager.RefreshSection("ideablade.configuration");

そして、私はこのように自分のデータベースに接続しようとします

if (BeczkaModel!= null)
        {
            BeczkaModel.Disconnect();
            BeczkaModel= null;
        }

IdeaBladeConfig.Instance.ObjectServer.RemoteBaseUrl = remoteBaseURL;
IdeaBladeConfig.Instance.ObjectServer.ServerPort = (int)double.Parse(serverPort);
IdeaBladeConfig.Instance.ObjectServer.ServiceName = serviceName;
IdeaBladeConfig.Instance.ObjectServer.ClientSettings.IsDistributed=true;

BeczkaModel= new BeczkaContainer();
BeczkaModel.AuthorizedThreadId = null;  
BeczkaModel.Connect();
4

3 に答える 3

2

データソースキー拡張機能やカスタムIDataSourceKeyResolverは、さまざまなデータベース接続を処理する方法です。EntityManager.Connect呼び出しが特定のデータソースに接続していないことを理解することが重要です。実際には特定のEntityServiceに接続しています。異なるEntityServiceURLに接続する方法は、ServiceKeyを使用することです。詳細はこちら: http ://drc.ideablade.com/devforce-2012/bin/view/Documentation/connect-to-multiple-entityservers 。

于 2013-03-01T03:09:25.277 に答える
1

カスタム DataSourceKeyResolver を実装することで、接続するデータベースを決定できます。

http://drc.ideablade.com/devforce-2012/bin/view/Documentation/data-sourcesに追加情報があり、http://drc.ideablade.com/devforce-2012/bin/viewにサンプルがあります。 /Documentation/code-sample-custom-datasourcekeyresolver .

于 2013-02-25T21:30:20.790 に答える
1

sbellini の投稿を明確にするために、データベース接続を動的に決定する方法が 2 つあります。最初の簡単な方法は、データ ソース拡張機能を使用することです。これは、データベース接続の静的リストがあり、実行時にリストから選択したい場合に便利です。2 番目の方法は、IDataSourceKeyResolver を実装することです。これにより、接続文字列全体を実行時に決定できます。

http://drc.ideablade.com/devforce-2012/bin/view/Documentation/data-sources

http://drc.ideablade.com/devforce-2012/bin/view/Documentation/code-sample-data-source-extensions

http://drc.ideablade.com/devforce-2012/bin/view/Documentation/code-sample-custom-datasourcekeyresolver

于 2013-02-28T00:54:14.883 に答える