Castle是針對.NET平台的一個開源項目,從數據訪問框架ORM到IOC容器,再到WEB層的MVC框架、AOP,基本包括了整個開發過程中的所有東西,為我們快速的構建企業級的應用程序提供了很好的服務。
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配置