一.创建Web工程
创建一个Web站点或者Web应用程序,添加对Castle.ActiveRecord.dll的引用。
二.创建需要持久化的业务实体
在.NET2.0下,由于引入了泛型,创建业务实体比1.1下简单了许多,业务实体只需要继承于泛型的ActiveRecordBase类,其中默认已经实现了一些静态的方法,不需要我们再在业务实体中实现。
[ActiveRecord(
"
Employees
"
)]
public class Employee : ActiveRecordBase < Employee >
{
private string employeeID;
private string lastName;
private string city;
private string address;
private string homePhone;
private string country;
[PrimaryKey(PrimaryKeyType.Assigned)]
public string EmployeeID
{
get { return employeeID; }
set { employeeID = value; }
}
[Property]
public string LastName
{
get { return lastName; }
set { lastName = value; }
}
[Property]
public string City
{
get { return city; }
set { city = value; }
}
[Property]
public string Address
{
get { return address; }
set { address = value; }
}
[Property]
public string HomePhone
{
get { return homePhone; }
set { homePhone = value; }
}
[Property]
public string Country
{
get { return country; }
set { country = value; }
}
}
public class Employee : ActiveRecordBase < Employee >
{
private string employeeID;
private string lastName;
private string city;
private string address;
private string homePhone;
private string country;
[PrimaryKey(PrimaryKeyType.Assigned)]
public string EmployeeID
{
get { return employeeID; }
set { employeeID = value; }
}
[Property]
public string LastName
{
get { return lastName; }
set { lastName = value; }
}
[Property]
public string City
{
get { return city; }
set { city = value; }
}
[Property]
public string Address
{
get { return address; }
set { address = value; }
}
[Property]
public string HomePhone
{
get { return homePhone; }
set { homePhone = value; }
}
[Property]
public string Country
{
get { return country; }
set { country = value; }
}
}
三.设置配置信息
在Web.config中设置如下信息,这部分与1.1没有什么区别
<?
xml version="1.0"
?>
< configuration >
< configSections >
< section name ="activerecord" type ="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" />
</ configSections >
< connectionStrings >
< add name ="NorthWind" connectionString ="Data Source=RJ-097;Initial Catalog=Northwind;User ID=sa;Password=sa" />
</ connectionStrings >
< activerecord isWeb ="true" >
< config >
< add key ="hibernate.connection.driver class" value ="NHibernate.Driver.SqlClientDriver" />
< add key ="hibernate.dialect" value ="NHibernate.Dialect.MsSql2000Dialect" />
< add key ="hibernate.connection.provider" value ="NHibernate.Connection.DriverConnectionProvider" />
< add key ="hibernate.connection.connection_string" value ="ConnectionString = ${NorthWind}" />
</ config >
</ activerecord >
</ configuration >
< configuration >
< configSections >
< section name ="activerecord" type ="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" />
</ configSections >
< connectionStrings >
< add name ="NorthWind" connectionString ="Data Source=RJ-097;Initial Catalog=Northwind;User ID=sa;Password=sa" />
</ connectionStrings >
< activerecord isWeb ="true" >
< config >
< add key ="hibernate.connection.driver class" value ="NHibernate.Driver.SqlClientDriver" />
< add key ="hibernate.dialect" value ="NHibernate.Dialect.MsSql2000Dialect" />
< add key ="hibernate.connection.provider" value ="NHibernate.Connection.DriverConnectionProvider" />
< add key ="hibernate.connection.connection_string" value ="ConnectionString = ${NorthWind}" />
</ config >
</ activerecord >
</ configuration >
四.初始化
ActiveRecord
在Global.asax的
Application_Start
添加初始化代码
void
Application_Start(
object
sender, EventArgs e)
{
// Code that runs on application startup
Castle.ActiveRecord.Framework.IConfigurationSource source = System.Configuration.ConfigurationManager.GetSection("activerecord") as Castle.ActiveRecord.Framework.IConfigurationSource;
Castle.ActiveRecord.ActiveRecordStarter.Initialize(typeof(Employee).Assembly, source);
}
{
// Code that runs on application startup
Castle.ActiveRecord.Framework.IConfigurationSource source = System.Configuration.ConfigurationManager.GetSection("activerecord") as Castle.ActiveRecord.Framework.IConfigurationSource;
Castle.ActiveRecord.ActiveRecordStarter.Initialize(typeof(Employee).Assembly, source);
}
五.使用业务实体
这部分也是与1.1一样,同样可以使用Create(),Save(),Update()等方法,不详细说了,这里我们用一个GridView来展示读取国家为UK的员工列表
<%
@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"
%>
< html >
< head runat ="server" >
< title > Castle Active Record for 2.0快速入门示例 </ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< h1 > Castle Active Record for 2.0快速入门示例 </ h1 >
< asp:GridView ID ="GridView1" AutoGenerateColumns ="false" runat ="server" >
< Columns >
< asp:BoundField HeaderText ="Employee ID" DataField ="EmployeeID" />
< asp:BoundField HeaderText ="LastName" DataField ="LastName" />
< asp:BoundField HeaderText ="City" DataField ="City" />
< asp:BoundField HeaderText ="Address" DataField ="Address" />
< asp:BoundField HeaderText ="HomePhone" DataField ="HomePhone" />
< asp:BoundField HeaderText ="Country" DataField ="Country" />
</ Columns >
</ asp:GridView >
</ form >
</ body >
</ html >
< html >
< head runat ="server" >
< title > Castle Active Record for 2.0快速入门示例 </ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< h1 > Castle Active Record for 2.0快速入门示例 </ h1 >
< asp:GridView ID ="GridView1" AutoGenerateColumns ="false" runat ="server" >
< Columns >
< asp:BoundField HeaderText ="Employee ID" DataField ="EmployeeID" />
< asp:BoundField HeaderText ="LastName" DataField ="LastName" />
< asp:BoundField HeaderText ="City" DataField ="City" />
< asp:BoundField HeaderText ="Address" DataField ="Address" />
< asp:BoundField HeaderText ="HomePhone" DataField ="HomePhone" />
< asp:BoundField HeaderText ="Country" DataField ="Country" />
</ Columns >
</ asp:GridView >
</ form >
</ body >
</ html >
后台代码:
protected
void
Page_Load(
object
sender, EventArgs e)
{
this.GridView1.DataSource = Employee.FindAllByProperty("Country", "UK");
this.GridView1.DataBind();
}
最后,运行的结果如下:
{
this.GridView1.DataSource = Employee.FindAllByProperty("Country", "UK");
this.GridView1.DataBind();
}
内容有些简单,后续有时间会继续介绍
Castle Active Record for .NET2.0
本文转自lihuijun51CTO博客,原文链接:
http://blog.51cto.com/terrylee/67670
,如需转载请自行联系原作者