• CYQ.Data 轻量数据访问层(一) 概述


    在很久很久以前。2007年底,我曾发布过CYQ.Data.DLL,那时的学术氛围很浓,评论的也比较重

    在那里,我曾做过一些简介与使用方法的帮助

    在这个系列中,我将一步一步开源并讲解实现的过程,由于文章进行编辑,日期变了

    以前旧文章地址为:http://www.cnblogs.com/cyq1162/archive/2009/11/05/968626.html

    这里先简单介绍一下数据访问层的大体结构:

    这里先上一张主要的图:

    该访问层主要分三类:

    一.自定义Table

    1.自定义实现轻量级MDataTable,并实现IDataReader接口,以便可以直接绑定到DataGrid,Repeater等控件

    主要数据包括

    自定义数据单元格:MDataCell

    自定义数据数据列集合:MDataColumns

    自定义数据行:MDataRecord,继承并实现IDataRecord,以后在控件后台可以实现类型转换,并实现与MDataRow的隐式转换

    2.数据主操作MDataRow,实现动态构建数据库表架构,并缓存表架构,同时实现数据的增删改查

    MDataResult是枚举,返回为MDataRow操作的结果类型

    二.自定义的Sql

    1.主要自已简化的SQLHelper,并结构Log记录出错异常

    DataType主要是数据库类型和C#类型之间的转换

    ProcedureSql主要是一些存储过程,可以实现读取数据库表架构及相应的分页存储过程

    OutPutData主要是提供生成数据库的表与视图与字段,会以枚举的形式存在,本数据方问层,会以枚举替代实体类的存在

    三,Cache类

    主要是缓存相应的表架构

    --------------------------------------

    说明,在接下来的讲解实例中,可能涉及到类的更名与移除

    并会优化同时也会去掉一些多余的代码与函数

    所以,本人会新建一个新的项目,重新写一次最新的项目,并提供下载

    关于功能的可能更新,如下面的操作:

    MDataRow mdr=new MDataRow(Table.Users);//Table.V_Users

    mdr[Users.UserName].Value='cyq';

    mdr.Update("id=1");

    mdr.Close();

    在这个示例中,如果Users为数据库,则Users.UserName枚举会直接转成(int)Users.UserName进行索引查询

    如果为V_Users或为多表查询的数据,则Users.UserName枚举会转成Users.UserName.ToString()进行遍历查询

    1.关于多表查询中,不仅仅限于视图,也支持构建的联合查询表,如:

    string usersTable="(select u.* from users u left join topic t on u.id=t.uid) v_users";

    MDataRow mdr=new MDataRow(usersTable);

    mdr[Users.UserName].Value='cyq';

    mdr.Update("id=1");

    mdr.Close();

    版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
    个人微信公众号
    创业QQ群:617713515
    Donation(扫码支持作者):支付宝:
    Donation(扫码支持作者):微信:
  • 相关阅读:
    python列表切片
    python注释行与段落
    PCL安装与配置
    自动驾驶相关
    (转)ping命令
    (转)linux应用之test命令详细解析
    (转)shell解析命令行的过程以及eval命令
    (转)ssh-keygen 中文手册
    (转)stty 命令说明及使用讲解
    (转)CentOS下的trap命令
  • 原文地址:https://www.cnblogs.com/cyq1162/p/1596424.html
Copyright © 2020-2023  润新知