zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [No0000F0]DataGrid一行Row添加ToolTip,wpf
    [No0000EE]主要的宏观经济指标查询
    [No0000E9]Microsoft Help Viewer 2.3绿色版
    [No0000F2]ip安全监视器
    [No0000ED]IPSec策略之管理
    [No0000EC]C# 字符串(String)
    [No0000EB]C# 数组(Array)
    [No0000EA]C# 可空类型(Nullable)
    [No0000E8]C# 方法 参数传递
    [No0000E7]C# 封装 与访问修饰符
  • 原文地址:https://www.cnblogs.com/beniao/p/Castle.html
Copyright © 2011-2022 走看看