对于三层结构运用ActiveRecord的感想

      
         今天在搭三层结构的时候,遇到了一个问题,一个关于查询的问题. 因为刚接触三层+ActiveRecord+工厂模式结构,对这一套结构体系还不是很熟悉,所以只能是边学边搭,结果在数据层(DAL)遇到这样一个问题:对一个管理员分组表进行相应条件的筛选.返回DataTable. 一开始自己的想法很简单,不就是一个普通的筛选吗?接着开始写代码:
         /// <summary>
        /// 返回管理员分组数据集合
        /// </summary>
        /// <param name="where">Sql语句条件</param>
        /// <param name="parameters">参数</param>
        /// <returns>数据集</returns>
        public DataTable GetListTable(string where, SqlParameter[] parameters)
        {
           
            return MySqlHelper.ExceteDataTable(Sql,parameters);
        }  
       写完以后接着一想,好像不大对.这样一个方法在业务逻辑层调用的时候势必要写Sql语句和调用SqlParameter,
这样项目就不可能实现支持多数据库,并且分层也不明确了.
         后来经过思考,修改代码
         public DataTable GetListTable(AdminGroup Model)
        {
            .................(相关代码(拼写Sql语句))
            return MySqlHelper.ExceteDataTable(Sql,parameters);
        }
         但是这样一来,如果我需要多表查询的时候怎么办?
         经过几个小时的思考和google,baidu还有寻求朋友的帮助 以后一个朋友和我对话提醒了我,他说:关系型数据库和面向对象编程天生不搭配,你只能根据需求在灵活和性能上取一个平衡点. 我想是啊 一个后台管理员分组的表记录一定很少 基本是不用筛选的 所以直接写一个返回所有记录的方法就可以了.如果有些表涉及多表查询,那就专门针对它们写一个针对多表查询的方法,一切以需求为主取灵活和性能的平衡点

转载于:https://www.cnblogs.com/lzhdizhen/archive/2007/06/06/773570.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值