zoukankan      html  css  js  c++  java
  • 对于三层结构运用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还有寻求朋友的帮助 以后一个朋友和我对话提醒了我,他说:关系型数据库和面向对象编程天生不搭配,你只能根据需求在灵活和性能上取一个平衡点. 我想是啊 一个后台管理员分组的表记录一定很少 基本是不用筛选的 所以直接写一个返回所有记录的方法就可以了.如果有些表涉及多表查询,那就专门针对它们写一个针对多表查询的方法,一切以需求为主取灵活和性能的平衡点
  • 相关阅读:
    分布式缓存技术memcached学习(一)——linux环境下编译memcahed
    分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装
    Centos 开启telnet-service服务
    Solr学习总结(四)Solr查询参数
    Solr学习总结(三)Solr web 管理后台
    Solr学习总结(二)Solr的安装与配置
    Solr学习总结(一)Solr介绍
    [tixml]保存,读取
    [ios]安装CocoaPods及使用详解
    MKAnnotationView和MKPinAnnotationView的区别
  • 原文地址:https://www.cnblogs.com/lzhdizhen/p/773570.html
Copyright © 2011-2022 走看看