一直想用O/R M的模式去开应用系统;但在。NET下又没有成熟的产品,nhibernate虽然不错但结构比较复杂,如果出现问题维护起来也比较麻烦。所以打算自己编写这样一个组件,在使用、维护和扩展方面的都比较容易把握;对项目的后期维护也比较有利。组件功能上也远比不上nhibernate,只实现了单表和视图的映射操作、查询对象化等功能。在设计的过程也参考了nhibernate的设计方式,毕竟nhibernate的设计不错可以直接拿过来使用。根据自己的情况修改一下就可以了。
在设计时第一个考虑的问题就是组件对多类型数据库的支持,所以针对数据库提供者提取接口;在设计这个接口时nhibernate给我带来很大的启发;可以说是直接引用了它的设计原理。当数据库提供者接口完成后,就可以针对这个接口做数据库处理的工作了。
IDataSession
数据操作描述,包括找开连接、启用事务、插入对象、删除对象等操作。
IDriverType
数据库提供者描述,主要用于描述数据库类型关键的东西,如果数据库连接对象、对应的Command类型等。
IExpression
条件表达式描述,用于处理查询过程中的条件;从些接口实现的条件表达式有:=、>、<>、like、in等;
组件还有很多对象进行内部处理的:类的映射信息,主要和忝相就应的SQL语句和命令对象;缓存类用于缓存操作命令对象、命令对持久化接口等。
类和数据库的关系映射
实体类和数据库表的关联采用了XML文件描述,相应对nhibernate业说比较简单.
以下是描述employees类和employees表对映象关系。
类文件
using System;
namespace NorthWind.Entitys
{
/// <summary>
/// Employees
/// </summary>
public class Employees
{
public Employees()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public const string F_EmployeeID="EmployeeID";
private Int32 mEmployeeID;
&nbs