Castle学习笔记----认识Castle.AvtiveRecord
ActiveRecord提供的简洁的O/R映射
ActiveRecord是Castle中提供的一个数据访问框架,它在底层封装了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