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配置