Я хочу изменить имя базы данных в файле SqlMapConfig.xml из приложения, помогает ли мне кто-нибудь?dyanamically изменить имя базы данных в файле SqlMapConfig.xml
ответ
Вы можете переопределить базу данных при создании экземпляра экземпляра Ibatis; Я делаю это для переключения между версиями отладки и выпуска приложения и, следовательно, доступа к другой целевой базе данных.
Если файл XML находится в сборке под названием DatalayerAssembly
, например, вы можете иметь метод для возвращения вашего нового экземпляра Ibatis на основе имени базы данных, как это:
public IBatisNet.DataMapper.ISqlMapper CreateNewIbatis(
String serverName,
String databaseName)
{
// Load the config file (embedded resource in assembly).
System.Xml.XmlDocument xmlDoc = IBatisNet.Common.Utilities.Resources.GetEmbeddedResourceAsXmlDocument("SqlMapConfig.xml, DatalayerAssembly");
// Overwrite the connectionString in the XmlDocument, hence changing database.
// NB if your connection string needs extra parameters,
// such as `Integrated Security=SSPI;` for user authentication,
// then append that to InnerText too.
xmlDoc["sqlMapConfig"]["database"]["dataSource"]
.Attributes["connectionString"]
.InnerText = "Server=" + serverName + ";Database=" + databaseName;
// Instantiate Ibatis mapper using the XmlDocument via a Builder,
// instead of Ibatis using the config file.
IBatisNet.DataMapper.Configuration.DomSqlMapBuilder builder = new IBatisNet.DataMapper.Configuration.DomSqlMapBuilder();
IBatisNet.DataMapper.ISqlMapper ibatisInstance = builder.Configure(xmlDoc);
// Now use the ISqlMapper instance ("ibatisInstance") as normal.
return ibatisInstance;
}
Я использую этот подход в Ibatis 1.6.2.0 на .Net, но точный конфигурационный файл SqlMap может варьироваться в зависимости от версии. В любом случае подход один и тот же; вам может понадобиться другой путь Xml (т. е. бит, который читает ["sqlMapConfig"]["database"]
и т. д., возможно, потребуется изменить для вашего конфигурационного файла)
Надеюсь, что это поможет.