程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Castle學習筆記----認識Castle.AvtiveRecord

Castle學習筆記----認識Castle.AvtiveRecord

編輯:關於.NET

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved