封装.Net数据访问层---羽量级Hibernate (连载一) ---转
对于.Net的数据访问层,现阶段主要是全硬编码和NHibernate等几种。对于硬编码的主要缺点是开
发周期长代码量大,而且对于较复杂的项目出错的几率大大增加,但正因为全是手工编码,所以代码的灵活度和优化那是不容忽视;第二种NHibernate,它主要的优点是把数据访问层封装起来,这样开发的速度和代码的正确性大大加强,减少了程序员大量的时间从而把精力放在业务处理上。但它的缺点也是显而易见,由于大量的封装速度上不及硬编码以及灵活性不够。鉴于两个的优点,我想还是程序员编码写大体的框架,但把数据访问层中增、删、改、查的关键代码封装起来,程序员只要写SQL语句就OK了。下面看一下我自己封装的DLL,我现在叫它GreenTea(绿茶)。下载绿茶Dll
我用简单的三层做示例:
1. 先看一下表结构:
Branch:(BranchId, BranchName, BranchShortName)
Depart:(DepartId, DepartName, ConnectTelNo, ConnectMobileTelNo, Faxes, BranchId)
2. 映射实体类
3. 配置文件
4. 现在数据访问层的写法
namespace MyOffice.DAL
{
public class DepartService
{
private const string SELECT_DEPART_DETAIL = "SELECT d.DepartId,DepartName, d.BranchId, fk_Branch_BranchName = b.BranchName, fk_Branch_BranchShortName = BranchShortName FROM [Depart] d
INNER JOIN [Branch] b
ON d.BranchId = b.BranchId";
public List<DepartInfo> GetAllDepartsDetail()
{
return DbReaderHelper.GetEntityList<DepartInfo>(
CommandType.Text, SELECT_DEPART_DETAIL,
null);
}
}
看现在的查询多简单,就一句话搞定一个包含外键的多表连接查询,这里查询要注意的地方就是,SQL的写法,其他的写法和正常一样,就是在获取外键列的时候,要严格写,比如fk_Branch_BranchName = b.BranchName,这里是不是似曾相识,对了fk_Branch就是配置文件和实体类里面定义的一样,第二个下划线后面是Branch表的列名,其实整个就是fk代表它是外键,Branch代表表的名称,BranchName就是外键表的列名。
本次章节我们用【绿茶】组件完成了查询,在后续章节我们会学习增、删、改等操作,以及参数自动化等功能。
北大青鸟-中博www.njaccp.com