zoukankan      html  css  js  c++  java
  • Castle ActiveRecord学习实践(3)配置与初始化

    前面两篇文章大致对Castle ActiveRecord 有了了解。现在要运行程序,还有一个重要的步骤没做处理,就是初始化和配置。

    先来看看需要配置什么信息

    1、使用应用程序配置文件(Web.config 或者App.config)

       1:  <configuration>
       2:    <configSections>
       3:      <section name="activeRecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler,Castle.ActiveRecord"/>
       4:    </configSections>
       5:    <activeRecord isWeb="true">
       6:      <config>
       7:        <add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>
       8:        <add key="dialect" value="NHibernate.Dialect.MsSql2005Dialect"/>
       9:        <add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
      10:        <add key="connection.connection_string" value="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Blog.mdf;Integrated Security=True;User Instance=True"/>
      11:        <add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"/>
      12:      </config>
      13:    </activeRecord>
      14:      <system.web>
      15:          <compilation debug="true" targetFramework="4.0" />
      16:      </system.web>
      17:   
      18:  </configuration>

    初始化代码 Global.asax.cs 引用

       1:  protected void Application_Start(object sender, EventArgs e)
       2:  {
       3:          IConfigurationSource source = ConfigurationManager.GetSection("activeRecord") as IConfigurationSource;
       4:         //Castle.ActiveRecord.ActiveRecordStarter.Initialize(source, typeof(Post), typeof(Comment),typeof(Tag),typeof(Category),typeof(TagPost));
       5:         Castle.ActiveRecord.ActiveRecordStarter.Initialize(System.Reflection.Assembly.Load("Model"), source);
       6:  }

    第4行代码为载入目标类型参数 Initialize(IConfigurationSource source, params Type[] types);

    第5行为Initialize(Assembly assembly, IConfigurationSource source)

    2、XmlConfigurationSource配置

    可以使用自己的xml文件来保存配置信息。

    ActiveRecordConfig.xml文件

       1:  <?xml version="1.0" encoding="utf-8" ?>
       2:  <activeRecord isWeb="true">
       3:    <config>
       4:      <add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>
       5:      <add key="dialect" value="NHibernate.Dialect.MsSql2005Dialect"/>
       6:      <add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
       7:      <add key="connection.connection_string" value="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Blog.mdf;Integrated Security=True;User Instance=True"/>
       8:      <add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"/>
       9:    </config>
      10:  </activeRecord>

    初始化代码

       1:  protected void Application_Start(object sender, EventArgs e)
       2:  {
       3:        XmlConfigurationSource source = new XmlConfigurationSource(Server.MapPath("~/ActiveRecordConfig.xml"));
       4:        Castle.ActiveRecord.ActiveRecordStarter.Initialize(System.Reflection.Assembly.Load("Model"), source);
       5:  }

    注意引入 Castle.ActiveRecord.Framework.Config

    3、InPlaceConfigurationSource配置

    这种实现是一种硬编码的方式,在实际的使用中并不推荐,但是有时候如果我们的配置信息是动态的获取,则这种方式就会变得非常有用。

       1:   protected void Application_Start(object sender, EventArgs e)
       2:   {
       3:       InPlaceConfigurationSource source = new InPlaceConfigurationSource();
       4:   
       5:       Dictionary<string, string> properties = new Dictionary<string, string>();
       6:   
       7:       properties.Add("hibernate.connection.driver_class", "NHibernate.Driver.SqlClientDriver");
       8:   
       9:       properties.Add("dialect", "NHibernate.Dialect.MsSql2005Dialect");
      10:   
      11:       properties.Add("hibernate.connection.provider", "NHibernate.Connection.DriverConnectionProvider");
      12:   
      13:       properties.Add("connection.connection_string", @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Blog.mdf;Integrated Security=True;User Instance=True");
      14:   
      15:       properties.Add("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle");
      16:   
      17:       source.Add(typeof(ActiveRecordBase), properties);
      18:   
      19:       ActiveRecordStarter.Initialize(System.Reflection.Assembly.Load("Model"), source);
      20:   }

    注意 需要添加Castle.Core.dll

  • 相关阅读:
    Flex 布局
    前端跨域之jsonp
    vs code 自定义代码片段
    vue中使用axios进行http通信
    Table边框合并
    getElementsBy 系列方法相比querySelector系列的区别
    vue中watch简单使用
    png图标任意赋色
    pc端与移动端适配解决方案之rem
    Express post请求无法解析参数的原因
  • 原文地址:https://www.cnblogs.com/whx1973/p/2722087.html
Copyright © 2011-2022 走看看