以下示例仅仅是我测试框架所用的一部分示范代码,仅供大家参考:
DAO: 依赖于NStarfaiNet的架构将不再需要DAO这一层,因为NStarfaiNet.Access就是你的DAO。为了不将NStarfaiNet过多方法和接口暴露给开发人员使用,应用架够有必要做一下适当的包装。
如下所示:
IBaseDao.cs:
/**//* 版权所有:版权所有(C) 2007 NStarfaiNet框架设计者 模块名称:NStarfaiNet.Test 完成日期:2006-08-20 设计作者:刘斌[liubin] 内容摘要:IBaseDao 的摘要说明。*/using System;using System.Data;using System.Collections.Specialized;using NStarfaiNet.Access.Interface;namespace NStarfaiNet.Test.Dao...{ /**//// <summary> /// 应用框架DAO接口 /// </summary> public interface IBaseDao : IDao ...{ 自动生成代码#region 自动生成代码 /**//// <summary> /// 新增记录。 /// </summary> /// <param name="entity">实体对象。</param> /// <returns>新增成功返回true,否则返回false。</returns> int Insert(IEntity entity); /**//// <summary> /// 删除记录。 /// </summary> /// <param name="entity">实体对象。</param> /// <returns>删除成功返回true,否则返回false。</returns> int Delete(Key key); /**//// <summary> /// 更新记录。 /// </summary> /// <param name="entity">实体对象。</param> /// <returns>更新成功返回true,否则返回false。</returns> int Update(IEntity entity); /**//// <summary> /// 获得表下一个主键值 /// </summary> /// <param name="tableName">表名称</param> /// <returns></returns> int GetPrimaryKeyValue(string tableName); /**//// <summary> /// 根据主键获得IEntity对象 /// </summary> /// <param name="key"></param> /// <returns></returns> IEntity Get(Key key); /**//// <summary> /// 查询表 /// </summary> /// <param name="tag">语句ID</param> /// <param name="ht">条件集合</param> /// <returns></returns> DataTable ExcuteDataTable(string tag, HybridDictionary ht); /**//// <summary> /// 获得SQL /// </summary> /// <param name="tag">语句ID</param> /// <param name="ht">条件集合</param> /// <returns></returns> string GetSQL(string tag, HybridDictionary ht); #endregion }}BaseDao.cs:
/**//* 版权所有:版权所有(C) 2007 NStarfaiNet框架设计者 模块名称:NStarfaiNet.Test 完成日期:2006-08-20 设计作者:刘斌[liubin] 内容摘要:BaseDao 的摘要说明。*/using System;using NStarfaiNet.Access.Interface;using NStarfaiNet.Access;namespace NStarfaiNet.Test.Dao...{ /**//// <summary> /// 应用框架DAO /// </summary> public class BaseDao : IBaseDao ...{ 自动生成代码#region 自动生成代码 /**//// <summary> /// 数据库访问接口。 /// </summary> private IDataAccess m_DataAccess = null; /**//// <summary> /// 数据库访问接口。 /// </summary> public IDataAccess DataAccess ...{ set ...{ m_DataAccess = value; } get ...{ return m_DataAccess; } } /**//// <summary> /// 数据库ID /// </summary> /// <remarks> /// dao_maps_config.config文件中database的ID /// </remarks> private string m_AccessID = string.Empty; /**//// <summary> /// 构造函数 /// </summary> public BaseDao() ...{ // 默认数据库 this.m_DataAccess = AccessManager.GetInstance(); } public BaseDao(string accessID) ...{ // 多数据库支持 this.m_AccessID = accessID; if (accessID == null || accessID.Length == 0) ...{ this.m_DataAccess = AccessManager.GetInstance(); } else ...{ this.m_DataAccess = AccessManager.GetInstance(m_AccessID); } } public int Insert(IEntity entity) ...{ // TODO: 添加 BaseDao.Insert 实现 return m_DataAccess.Insert(entity); } public int Delete(Key key) ...{ // TODO: 添加 BaseDao.Delete 实现 return m_DataAccess.Delete(key); } public int Update(IEntity entity) ...{ // TODO: 添加 BaseDao.Update 实现 return m_DataAccess.Update(entity); } public int GetPrimaryKeyValue(string tableName) ...{ // TODO: 添加 BaseDao.GetPrimaryKeyValue 实现 return m_DataAccess.GetPrimaryKeyValue(tableName); } public System.Data.DataTable ExcuteDataTable(string tag, System.Collections.Specialized.HybridDictionary ht) ...{ // TODO: 添加 BaseDao.GetDataTable 实现 return m_DataAccess.ExcuteDataTable(tag, ht);; } public IEntity Get(Key key) ...{ // TODO: 添加 BaseDao.Get 实现 return m_DataAccess.Get(key); } public string GetSQL(string tag, System.Collections.Specialized.HybridDictionary ht) ...{ // TODO: 添加 BaseDao.GetSQL 实现 return m_DataAccess.GetSQL(tag, ht); } #endregion }}BLL:
自动生成的业务类,此处以表bsi_test对应的业务类为示范代码,
/**//* 版权所有:版权所有(C) 2007 NStarfaiNet框架设计者 模块名称:NStarfaiNet.Test 完成日期:2006-08-20 设计作者:刘斌[liubin] 内容摘要:BsiTestBLL 的摘要说明。*/using System;using NStarfaiNet.Access.Interface;using NStarfaiNet.Test.Dao;using NStarfaiNet.Test.Model.Interface;using NStarfaiNet.Test.BLL;namespace NStarfaiNet.Test.GeneratorCode.BLL...{ /**//// <summary> /// BsiTestBLL 的摘要说明。 /// </summary> public class BsiTestBLL : BaseBLL ...{ 自动生成代码#region 自动生成代码 protected BsiTestBLL() ...{ } protected BsiTestBLL(string accessID) ...{ base.m_AccessID = accessID; } private static volatile BsiTestBLL m_instance = null; /**//// <summary> /// 方法名称: GetInstance /// 内容摘要: 取得 BsiTestBLL 对象 /// </summary> /// <param name="accessID">Database ID</param> /// <returns>返回一个已经存在的实体</returns> public static BsiTestBLL GetInstance(string accessID) ...{ // 通用的必要代码 iBatisNet双校检机制,如果实例不存在 if (m_instance == null) ...{ lock (typeof (BsiTestBLL)) ...{ // 如果实例不存在 if (m_instance == null) ...{ // 创建一个的实例 m_instance = new BsiTestBLL(accessID); } } } // 返回业务逻辑对象 return m_instance; } /**//// <summary> /// 方法名称: GetInstance /// 内容摘要: 取得 BsiTestBLL 对象 /// </summary> /// <returns>返回一个已经存在的实体</returns> public static BsiTestBLL GetInstance() ...{ // 通用的必要代码 iBatisNet双校检机制,如果实例不存在 if (m_instance == null) ...{ lock (typeof (BsiTestBLL)) ...{ // 如果实例不存在 if (m_instance == null) ...{ // 创建一个的实例 m_instance = new BsiTestBLL(); } } } // 返回业务逻辑对象 return m_instance; } /**//// <summary> /// 获得Dao /// </summary> private IBaseDao Dao ...{ get ...{ return base.GetDAO(); } } /**//// <summary> /// 方法名称: Insert /// 内容摘要: 插入纪录 /// </summary> /// <returns>int</returns> public int Insert(IBsiTestEntity obj) ...{ obj.TestId = this.Dao.GetPrimaryKeyValue("bsi_test"); return this.Dao.Insert(obj); } /**//// <summary> /// 方法名称: Update /// 内容摘要: 更新纪录 /// </summary> /// <returns>int</returns> public int Update(IBsiTestEntity obj) ...{ return this.Dao.Update(obj); } /**//// <summary> /// 方法名称: Delete /// 内容摘要: 删除纪录 /// </summary> /// <returns>int</returns> public int Delete(Key key) ...{ return this.Dao.Delete(key); } /**//// <summary> /// 方法名称: Get /// 内容摘要: 由键值获取一个实体对象 /// </summary> /// <returns>IBsiTestEntity</returns> public IBsiTestEntity Get(Key key) ...{ return (IBsiTestEntity)this.Dao.Get(key); } #endregion }}