在asp.net2.0中使用Castle

本文介绍如何使用 Castle 框架简化 .NET 2.0 应用程序中的数据库操作。通过 Castle 的 ActiveRecord 模块,开发者可以更轻松地进行数据库配置和查询,无需编写 hbm 后缀的配置文件。文章提供了 web.config 和 global.asax 文件的配置示例,并展示了如何使用 HQL 语句进行数据库查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

castle (for .net2.0 )在项目开发中真的太好了,可以减少好多的工作量,内层由于封装了NHibernate,因此配置文件的书写还有内置的一些操作方法都比Nhibernate强很多。不需要写hbm后缀的配置文件了。

内置的很多方法都可以重载,用起来很简单的,如果想详细的从头学习,推荐你看看Terrylee的博客(里面的好东西太多了)。

下面就是我的代码

web.config

  <configSections>
    <section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord"/>
  </configSections>
    <connectionStrings>
    <add name="Castle" connectionString="Data Source=.;Initial Catalog=northwind;Integrated Security=True"/>
      </connectionStrings>
  <activerecord isWeb="true">
    <!--在asp.net中运行所以要设置为true-->
    <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="ConnectionString = ${Castle}"/>
    </config>
  </activerecord>

global.asax文件(<%@ Import Namespace="customers" %>//引入你的命名空间)

Application_Start事件:

Castle.ActiveRecord.Framework.IConfigurationSource source = System.Configuration.ConfigurationManager.GetSection("activerecord") as Castle.ActiveRecord.Framework.IConfigurationSource;
        Castle.ActiveRecord.ActiveRecordStarter.Initialize(System.Reflection.Assembly.Load("customers"), source);//加载assembly,需要修改成自己的程序集

类库文件的书写:

由于本部分关心的是castle中HQL语句的一部分使用,只要是in,所以其他内容不贴出来了

public static IList FindAll(params NHibernate.Expression.ICriterion[] cri)
        {
            return (IList)FindAll(typeof(Customers), cri);
        }

至此,web页面就可以使用castle来操作数据库了

In的用法:

GridView1.DataSource = customers.Customers.FindAll(Expression.In("CustomerID", TextBox1.Text.Split(',')));
        GridView1.DataBind();

Expression.In的第二个参数可以是一个Object数组,也可以是ICollection数据

上面代码中TextBox1.Text.Split(',')可以直接写成new string[]{'AA','BB'}

顺便介绍一下常用的其他的谓词的用法:

//精确查询
        this.GridView1.DataSource = Users.FindAll(Expression.Eq("EmailAddress", TextBox1.Text));
        //模糊查询,有一个匹配模式MatchMode
        //this.GridView1.DataSource = Users.FindAll(Expression.Like("EmailAddress", TextBox1.Text,MatchMode.Anywhere));
        this.GridView1.DataBind();

 

本文基于vs2005+castle(for 2.0)环境

一边学习一边看Terrylee的博客一边练习,在此特向Terrylee老兄表示感谢!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值