Castle学习笔记----认识Castle.AvtiveRecord

    Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架、AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务。
ActiveRecord提供的简洁的O/R映射
    ActiveRecordCastle中提供的一个数据访问框架,它在底层封装了NHibernate的操作,使用特性来代替映射文件,它提供的简洁的O/R映射会让你惊叹原来实现持久化数据层是那么简单。
一.首先建立实体类并完对数据库的映射

namespace ZDS.Test.Model
{
    [ActiveRecord("Users")]
    public class Users : ActiveRecordBase<Users> //继承于Castle的ActiveRecordBase
    {
        private int oid;
        [PrimaryKey(PrimaryKeyType.Identity,"Oid")]
        public int Oid
        {
            get { return oid; }
            set { oid = value; }
        }

        private string name;
        [Property("Name",Length=100,NotNull=true)]
        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        private string sex;
        [Property("Sex")]
        public string Sex
        {
            get { return sex; }
            set { sex = value; }
        }

        private string age;
        [Property("Age")]
        public string Age
        {
            get { return age; }
            set { age = value; }
        }
    }
}
大家可能注意到了,每一个属性上面都加上了特性[Property()].
如果属性名和字段名一致,[Property()]中可以为空,也可以写上字段的名字.
这里用[PrimaryKey]特性指定Id作为主键,并且说明了主键的类型为自增型的,用PrimaryKeyType.Identity来说明.

下一步我们为实体类根据需要加上静态的操作方法,至于Create(),Update(),Delete(),Find(),FindAll()等方法则会直接从ActiveRecordBase基类中继承,示例代码如下:
二.建立实现层类,直接继承于ActiveRecordBase的方法

namespace ZDS.Test.Component
{
    public class UserComponent:ActiveRecordBase<Users>  //注意这里要继承于ActiveRecordBase
    {
        public static void Create(Users user)
        {
            user.Create();
        }

        public static IList<Users>  QueryAll()
        {
            return (IList<Users>)FindAll(typeof(Users));
        }

        public static Users QueryByOid(int Oid)
        {
            //return (Users)FindByPrimaryKey(typeof(Users),Oid);
            return (Users)Find(Oid);//这里的这两种方法都是可以的
        }
    }
}
三.建立测试程序来调用这些方法

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GridViewDataBind();
        }
    }

    /// <summary>
    /// 添加用户
    /// </summary>
    protected void Button2_Click(object sender, EventArgs e)
    {
        Users user = new Users();
        user.Name = this.TextBox1.Text.Trim();
        user.Sex = this.TextBox2.Text.Trim();
        user.Age = this.TextBox3.Text.Trim();
        UserComponent.Create(user);
        GridViewDataBind();
    }

    /// <summary>
    /// 查询全部
    /// </summary>
    public void GridViewDataBind()
    {
        this.GridView1.DataSource = UserComponent.QueryAll();
        this.GridView1.DataBind();
    }

    /// <summary>
    /// 查询但条数据
    /// </summary>
    protected void Button3_Click(object sender, EventArgs e)
    {
         Users user = UserComponent.QueryByOid(int.Parse(this.TextBox4.Text.Trim()));
         this.Label1.Text = string.Format("编号为:{0},姓名:{1},性别:{2},年龄:{3}",
                             user.Oid,
                             user.Name,
                             user.Sex,
                             user.Age);
    }

}
本次笔记就先记录于此,要想程序能够正常运行还得配置一些文件,具体配置请看我写的Castle学习笔记----Castle.ActiveRecord配置
http://www.cnblogs.com/beniao/archive/2007/11/18/963392.html

posted on 2007-11-18 19:49  Bēniaǒ  阅读(1068)  评论(2编辑  收藏  举报