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;
            }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////

posted on 2006-09-06 07:48  ugvanxk  阅读(382)  评论(0编辑  收藏  举报

导航