Water for asp.net 之七:多层架构的实现
source code address:water source
demo address:water demo
blogs address:water bolgs
Water提供了一组多层架构的基础类:如下图:
其中最低层的Emtity xml部分我们在Water for asp.net 之四:entity xml配置文件和Water for asp.net 之六:entity xml配置文件 (续)中以介绍过了。
对于各层次的实现我们只需在相应的层次继承相应的基类(或接口)即可。一下是一个简单的示例:
- Model层(EmployeesInfo) 代码using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//导入Water.Architecture2.Model;
using Water.Architecture2.Model;
namespace demo.Objects.Model
{
[Serializable]
public class EmployeesInfo:BaseEntity
{
}
}当然你也可以在employeeInfo中定义它的属性,如:
代码using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//导入Water.Architecture2.Model;
using Water.Architecture2.Model;
namespace demo.Objects.Model
{
[Serializable]
public class EmployeesInfo:BaseEntity
{
private int id;
public int Id
{
get { return id; }
set { id = value; }
}
private string firstName;
public string FirstName
{
get { return firstName; }
set { firstName = value; }
}
private string lastName;
public string LastName
{
get { return lastName; }
set { lastName = value; }
}
//...
}
}这完全取决于你的个人爱好,如,你可能有类似于这种返回实体的方法 List< employeeInfo > getEmployees(){...},不过我建议你不用实现它的属性,仅仅定义这个类就可以了,因为这样很简单并且我实现了很多的控件都是返回DataSet或IDataReader的。
- IDAL层(IEmployeesDAL)代码using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//导入Water framework中Water.Architecture2.IDAL;
using Water.Architecture2.IDAL;
//导入当前应用Model
using demo.Objects.Model;
namespace demo.Objects.IDAL
{
public interface IEmployeesDAL:IBaseDAL<EmployeesInfo>
{
}
} - DAL层(EmployeesDAL)代码using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//导入Water framework中Water.Architecture2.DAL;
using Water.Architecture2.DAL;
//导入当前应用Model
using demo.Objects.Model;
//导入当前应用IDAL
using demo.Objects.IDAL;
namespace demo.Objects.DAL
{
public class EmployeesDAL:BaseDAL<EmployeesInfo>,IEmployeesDAL
{
}
}其中基类BaseDAL中的方法都是virtual的,所以在这个类中可根据你的数据访问逻辑override基类的方法。
此外,根据Water for asp.net 之四:entity xml配置文件中关于entity节点的配置
<entity class="demo.Objects.Model.EmployeesInfo" table="employees" dal-class="demo.Objects.DAL.EmployeesDAL" default-orderby-express="id">
我们可以指定entity所用的dal-class类,也就是说我们可以定义多个dal-class类。
- BLL层(Employees)代码using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//导入Water framework中Water.Architecture2.BLL;
using Water.Architecture2.BLL;
//导入当前应用Model
using demo.Objects.Model;
//导入当前应用IDAL
using demo.Objects.IDAL;
namespace demo.Objects.BLL
{
public class Employees:BaseBLL<EmployeesInfo,IEmployeesDAL>
{
}
}其中基类BaseBLL中的方法都是virtual的,所以在这个类中可根据你的业务逻辑override基类的方法。
至此,关于Water的ORM和多层结构的实现都介绍完毕!
posted on 2010-01-27 22:15 guoqiang.liu 阅读(2356) 评论(15) 编辑 收藏 举报