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