【问题标题】:Set server address dynamically in ideablade for second time?第二次在ideablade中动态设置服务器地址?
【发布时间】:2013-02-08 02:46:37
【问题描述】:

我有这个问题,在我的程序中,我动态设置服务器地址并尝试连接到我的数据库,如果我提供的地址正确,它工作正常,如果不正确,则无法连接,这是正常的。之后我想更改此地址,但即使我在代码中更改它并尝试再次连接我的数据库,它仍然会记住旧配置并且仍然无法连接。我应该怎么做才能改变它?

我这样设置我的配置:

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();

【问题讨论】:

    标签: c# wpf database-connection devforce


    【解决方案1】:

    数据源密钥扩展和/或自定义 IDataSourceKeyResolver 是处理不同数据库连接的方法。重要的是要意识到 EntityManager.Connect 调用没有连接到特定的数据源。它实际上是连接到一个特定的 EntityService。连接到不同 EntityService URL 的方法是使用 ServiceKey。更多信息在这里:http://drc.ideablade.com/devforce-2012/bin/view/Documentation/connect-to-multiple-entityservers

    【讨论】:

      【解决方案2】:

      您将能够通过实现自定义 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 找到示例。

      【讨论】:

        【解决方案3】:

        为了澄清sbellini的帖子,有两种方法可以动态确定数据库连接。第一种也是更简单的方法是使用数据源扩展。如果您有一个静态的数据库连接列表并希望在运行时在列表中进行选择,这将非常有用。第二种方法是实现 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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-06
          • 2013-05-16
          • 2012-12-21
          • 2015-02-23
          • 1970-01-01
          相关资源
          最近更新 更多