ActivateRecord硬编码不成功,修改Nhibernate的配置文件,然后进行初始化。
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Windows.Forms;
namespace Derating.Business.DB
{
public class SetConfig
{
private XmlDocument doc;
private string configFile;
private const string
searchPath="configuration/activerecord/config/add[@key=\"hibernate.connection.connection_string\"]/@value";
public SetConfig(string cfgFile)
{
configFile = cfgFile;
////如果文件为只读的,去掉只读属性
File.SetAttributes(configFile, File.GetAttributes(configFile) & (~FileAttributes.ReadOnly));
}
/// <summary>
/// 给字符串加引号
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
private string QuotedStr(string s)
{
return "\"" + s + "\"";
}
/// <summary>
/// 调入文件
/// </summary>
private void LoadFromFile()
{
doc = new XmlDocument();
doc.Load(configFile);
}
/// <summary>
/// 保存设置
/// value="UID=sa;Password=;Initial Catalog=Derating;Data Source=."
/// 给配置文件加个注释,防止修改失败,用户可以根据例子修改
/// </summary>
/// <returns></returns>
public bool SaveSetting(string setting)
{
bool blResult = true;
try
{
LoadFromFile();
XmlNode node = doc.SelectSingleNode(searchPath);
if (node != null)
{
node.Value = setting;
doc.Save(configFile);
}
else
{
blResult = false;
}
}
catch
{
blResult = false;
}
return blResult;
}
}
}
////////////////////////////////////App.config////////////////////////////////////////////////////////////////////////
<?xml version="1.0"?>
<configuration>
<configSections>
<!--<section name="nhibernate" type="Nhibernate, Version=1.0.2.0,Culture=neutral, PublicKeyToken=154fdcb44c4484fc" />-->
<section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord"/>
</configSections>
<activerecord>
<config>
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect"/>
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
<add key="hibernate.connection.connection_string" value="UID=sa;Password=;Initial Catalog=dbname;Data Source=."/>
</config>
</activerecord>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Nullables" publicKeyToken="154FDCB44C4484FC" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.0.2.0" newVersion="1.0.2.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="NHibernate" publicKeyToken="154FDCB44C4484FC" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.0.2.0" newVersion="1.0.2.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
////////////////////////////////////////////调用部分/////////////////////////////////////////////////////////////////
try
{
////修改配置文件
SetConfig newConfig = new SetConfig(Application.ExecutablePath + ".config");
newConfig.SaveSetting(cfgSetting);
this.DialogResult = DialogResult.OK;
}
catch
{
this.DialogResult = DialogResult.None;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////