2013-02-22 33 views
2

我有這個問題,我在我的程序中動態地設置服務器地址,並嘗試連接到我的數據庫,它工作正常,如果我提供的地址是正確的,如果不是它不連接,這是正常的。之後,我想改變這個地址,但即使我在代碼中改變它,並嘗試再次與我的數據庫連接,它仍然記得舊的配置,但仍然沒有連接。我應該怎麼做才能改變它?第二次在ideablade中動態設置服務器地址?

設置我的配置是這樣的:

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

,我試圖通過實現自定義連接到我的DATABSE這樣

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

回答

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

相關問題