第二次在ideablade中动态设置服务器地址?

时间:2013-02-22 13:04:40

标签: c# wpf database-connection devforce

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

我设置了这样的配置:

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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找到样本。

答案 2 :(得分:1)

为了澄清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