Welcome

首页 / 软件开发 / .NET编程技术 / 有关泛型和模式

有关泛型和模式2011-04-10 博客园 Eric Wang仿Petshop4.0的架构,在实体层使用了ORM框架Nhibernate

封装NH对业务对象的访问如下:

/// <summary>
/// 查询记录
/// </summary>
/// <param name="hql">HQL语句</param>
/// <param name="args">HQL语句中的参数值</param>
/// <returns>IList<T></returns>
public IList<T> Select<T>(string hql, Dictionary<string, object> args)
{
try
{
session = NHibernateDatabaseFactory.CreateSession();
IQuery query = session.CreateQuery(hql);
if (args != null)
{
this.PrepareQuery(query, args);
}
return query.List<T>();
}
catch (Exception err)
{
throw err;
}
}

对业务对象的加载上,有两种方式。

方式一:

实体层:在BaseDAL类中定义通用的泛型访问方法

public statci IList<T> GetData<T>(string hql)

{

return new NHUtility.NHibernateHelper().Select<T>(hql);

}

业务层访问:

如Employee业务层:

public List<EmployeeInfo> GetData()

{

List<EmployeeInfo> emps = (List<EmployeeInfo>) BaseDAL.GetData<EmployeeInfo>("From Employee E");

}

这种方式,每个业务对象都要在业务层实现GetData方法。