这是一个DotNet轻量级ORM框架,解决C#.Net开发过程中重复繁琐的数据库CURD操作。

前言

因工作中接手的.net项目,源码里面都用了动软代码生成的源码做为数据库操作类库。其中,有些根本就没有用到,今后也不会用到的冗余代码——垃圾代码。而每次如果有表结构修改,就得重新生成表实体/手动修改实体类,然后再修改代码中实体类逻辑,再修改DAL(数据库访问层)的赋值代码、sql字段、数据类型。

于是,产生一个想法,借鉴EF的理念,利用反射技术,用表实体去操作数据库,做增、改、删、查处理。并且,将表实体类更精细化标注,增加了字段名、主键、自增长、注释【标题】、数据类型、长度的属性标识,更有利于实体生成更优的sql脚本。

由此,通过反射技术把所有表CUDR操作的统一处理,以前修改了表结构,就得更新表实体类、修改逻辑代码、修改DAL。现在,只需求更新表实体及对应的逻辑代码就可以,不用再去维护DAL代码,干掉那些每个DAL层中70%的代码,达到精简代码,提高开发效率的目的。

有了这个想法,便开始了冗长的撸代码,断断继继历经两个月的时间,终于完成了构想的雏形。然后,又花点时间去了解一下怎么玩github,把源码库传到上面去。放出来,让有需要的人拿去用,希望各位看官多多指教、发表意见,大家一起改进,完善。

下面奉上我的github地址,走过路过的都进来看看,给个Star就更好不过了。

详情介绍

项目开源库结构图

1、YEasyModel

主要实体类反射类库,定义实体类字段的数据类型、长度、主键等特性;定义CURD方法,查询参数表达式、排序表达式。利用lambda定义查询逻辑,生成sql过滤条件;查询/更新字段定义,通过反射生成对应的Sql参数;排序逻辑定义,生成字段排序规则;DataTable与实体类转换方法。

2、ModelApp

winform程序,用于配置连接数据库,定义命名空间、实体类名,生成指定的表/视图的实体模型;

3、WebDemo

Webapi范例,简单的表实体模型使用说明;

(暂时先写这些,后面有时间再完善)

性能

以下四种不同方式查询数据库记录并转为实体类的测试:

m1,DataSet实体表查询记录;

m2,YEasyModel实体类工具查询记录;

m3,三层工厂模式查询记录,实例化一次,后面从缓存取得实例;

m4,Entity Framework查询记录;

查询消耗的时间单位是毫秒。

第一次查询1条记录

第二次查询1条记录

第三次查询1条记录

第四次连续执行50次的查询1条记录

执行1次查询8条记录

连续执行50次的查询8条记录

根据以上多种测试结果对比得出:

m1 —— DataSet排第三;

m2 —— YEasyModel其次;

m3 —— 三层工厂模式最快,因为有实例化缓存,第二次开始便不用再创建实例对象, 单条数据查询时,速度优势明显。但需要维护的逻辑代码多;

m4 —— EF最慢,且劣势明显;太慢了!

总结

(有空再写)

最后,奉上github地址:https://github.com/michaelyes/LiteORM-For-DotNet

LiteORM-For-DotNet,我的第一个开源库的更多相关文章

  1. 我的第一个开源项目-logger4Net

    学会学习,学会分享,学会创造. 这我的第一个开源项目.以前总觉得开源离自己很远,但通过不断学习发现,其实自己已经走在这条路上.思想就在那,只要懂得学习,懂得分享,就会懂享受创造的快乐感与殷实感. 没做 ...

  2. 全球第一免费开源ERP Odoo Ubuntu最佳开发环境独家首发分享

    起源 近年来随着国内的互联网经济的快速腾飞,诞生了很多开源软件创造的市场价值以及企业价值神话,特别是对于企业ERP领域,一直以来都是高昂的国内外产品充实,国内的中小成长型企业越来越需要一套好看又能打, ...

  3. 我的第一个开源控件-DragGridView

    我的第一个开源控件出炉了,希望各个小伙伴给个star,支持下.项目地址 1. 前言 因为项目须要,要做一个相似腾讯视频.频道管理.拖拽排序的效果.这个控件是在原地址 之上改造出来的.先看下效果图. 1 ...

  4. 我的第一个开源项目 Kiwis2 Mockserver

    我的第一个开源作品Kiwis2 Mock Server,目前公测中,欢迎大家提供宝贵意见. 代码:https://github.com/kiwis2/mockserver 主页:https://kiw ...

  5. 聊聊第一个开源项目(内网穿透) - CProxy

    文章首发:聊聊第一个开源项目 - CProxy 作者:会玩code 初衷 最近在学C++,想写个项目练练手.对网络比较感兴趣,之前使用过ngrok(GO版本的内网穿透项目),看了部分源码,想把自己的一 ...

  6. 我的第一个开源作品Kiwis2 Mock Server

    我的第一个开源作品Kiwis2 Mock Server,目前公测中,欢迎大家提供宝贵意见. 代码:https://github.com/kiwis2/mockserver 主页:https://kiw ...

  7. C/C++ 开源库及示例代码

    C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...

  8. 开源库Magicodes.ECharts使用教程

    目录 1    概要    2 2    Magicodes.ECharts工作原理    3 2.1    架构说明    3 2.1.1    Axis    4 2.1.2    CommonD ...

  9. iOS项目中常用的第三方开源库

    1.项目使用的第三方开源库 项目使用了CocoaPods(类似java中的maven)管理常用的第三方库,一些特殊的单独引用,下面介绍下比较好用的几个. (1)AFNetworking 目前比较推荐的 ...

随机推荐

  1. 十九、表添加字段的SQL语句写法

    通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数增加字段: alter table [表名] add 字段名 smallin ...

  2. C语言中的“>>”和“

    先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i = 1; i = i << 2; //把i里的值左移2位 也就是说,1的2进制是00 ...

  3. PHP--仿微信, 通过登陆者用户名显示好友列表,显示头像和昵称

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 完整使用JDBC访问数据库

    Connection con = null; PreparedStatement statement = null; ResultSet res = null; List<Student> ...

  5. 使用jquery删除链接所在的行

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. request获取容器过程

    获取容器过程 CoyoteAdapter.postParseRequest(org.apache.coyote.Request req, Request request, org.apache.coy ...

  7. 原创:用node.js搭建本地服务模拟接口访问实现数据模拟

    前端开发中,数据模拟是必要的,这样就能等后台接口写完,我们直接把接口请求的url地址从本地数据模拟url换成后台真实地址就完成项目了.传参之类的都不用动. 之前网上找了很多类似于mock等感觉都不太实 ...

  8. 【iOS】PLA 3.3.12

    发件人 Apple Program License Agreement PLA We found that your app uses the Advertising Identifier but d ...

  9. superset安装文档

    1 安装python3.6 yum install epel-release -y yum install https://centos7.iuscommunity.org/ius-release.r ...

  10. 搭建谷歌浏览器无头模式抓取页面服务,laravel->php->python->docker !!!

    背景: 公司管理系统需要获取企业微信页面的配置参数如企业名.logo.人数等信息并操作,来隐藏相关敏感信息并自定义简化企业号配置流程 第一版已经实现了扫码登录获取cookie,使用该cookie就能获 ...