前言

从之前的两遍文章可以看出ORM的现状。

  1. Mego(01) - NET中主流ORM框架性能对比
  2. Mego(02) - NET主流ORM框架分析

首先我们先谈下一个我们希望的ORM框架是什么样子的:

  1. 基于ORM原理其性能一定不如手写SQL,但是可以有一定程度损失这就像C++和NET/JAVA的关系一样,所以性能不能太差。
  2. CLR模型可以和数据库对象结构高度一致,在大型项目中大家应该有过满世界找某表在哪里有用过,某个字段是否可以删除,某个字段是否可以改名的经历。手写SQL的代码对项目重构是个极大的挑战。
  3. ORM模型可以帮助维护数据库结构版本,相信有不少项目团队都需要手写数据库表的升级脚本。
  4. 可以用LINQ表达出大部分的业务增删改查,当然不可能全部做到,即使是手写SQL也有做不到的(例如大数据统计分析),我觉的可以有10%以内的复杂SQL手写。

可能许多开发者都会有找过让自己比较满意的ORM框架,我也是其中之一,在漫长的信息系统设计及开发工作中,一直希望能有一个功能强大性能不错的ORM框架。一直都很关注 EntityFramework 的版本升级,不过后来也很失望,它的发展太慢了。无论是EntityFramework 还是EntityFrameworkCore 都包含了微软的商业竞争的成分。当然期间也尝试过各种其他的ORM框架,都有各种各样的不足,这里就不一一列举了。

新选择

在各种纠结中于是诞生了这个新的ORM框架,我取名叫【Mego】,之所以叫这个名称是由于它包含了本框架的运作原理如下所示,取各个单词的首字母而得:

Metadata -> Expression -> Generate -> Object

元数据     -> 表达式        -> 生成         -> 数据对象

对于这个框架的定位是要在 功能和性能 两个方面取代 EntityFrameworkEntityFrameworkCore 。性能在第一篇博客中已经说明了目前已经超过了它们两个,功能上后续会写出这三个框架的功能对比。

简介

Mego是一个高性能且功能强大的ORM框架,它基于 EntityFramework 和 EntityFrameworkCore 这两个著名的ORM框架吸收了其中优秀理念,借鉴了其中的许多的功能设计,完全支持LINQ写法,多数据库支持,支持NET3.5到目前最新NET及NETCore所有包含分布式事务的NET框架。为了让初学者易于上手及使用,我们最外层的API大部分与 EntityFramework 相同,如果有EF使用经验的人应该会很快上手。

我已经在Github上开源了Mego框架的源代码,欢迎大家给出改进意见。

支持NET版本

本框架支持下列NET版本及后续版本。

  1. .NETFramework, Version = v3.5
  2. .NETFramework, Version = v4.0
  3. .NETFramework, Version = v4.5
  4. .NETStandard, Version = 2.0

Mego框架使用文档

下面是本框架的使用文档,目前会一直在博客园发布框架使用文档,下面的文档会持续更新。


Mego入门

 创建模型

 关系数据库建模

 高级建模

 查询数据

  • 基本查询
  • 高级查询
  • 加载相关数据
  • 匿名对象查询
  • 原生数据库操作

 保存数据

  • 基本保存
  • 高级提交数据
  • 匿名对象保存数据
  • 保存关系数据
  • 处理并发冲突
  • 使用事务
  • 生成属性

 数据对象管理

  • 数据库特性
  • 判断对象存在
  • 创建表
  • 创建关系

数据库提供者


Mego(03) - ORM框架的新选择的更多相关文章

  1. Mego(2) - NET主流ORM框架分析

    接上文我们测试了各个ORM框架的性能,大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异.这里和大家分享下我对ORM框架的理解及一些使用经验. ORM框架工作原理 典型ORM ...

  2. Mego(1) - NET中主流ORM框架性能对比

    从刚刚开始接触ORM到现在已有超过八年时间,用过了不少ORM框架也了解了不少ORM框架,看过N种关于ORM框架的相关资料与评论,各种言论让人很难选择.在ORM的众多问题中最突出的问题是关于性能方面的问 ...

  3. 手把手撸套框架-ORM框架的选择

    目录 一,为什么选择SqlSugar? 在.net core ORM框架中,能选择的方案其实有很多,包括以下方案: 1,EF-Core 2,Dapper 3,FreeSql 4,SqlSugar 为什 ...

  4. (新)自己动手写ORM框架(1)-增删查改的使用

    之前写过一个系列文章自己动手写ORM框架,经过在多个项目的中的使用,对这套代码进行了许多改进,下面是使用方法: 新增学员信息代码预览: DBHelper db = DBHelper.getInstan ...

  5. Weed3 for java 新的微型ORM框架

    Weed3,微型ORM框架(支持:java sql,xml sql,annotation sql:存储过程:事务:缓存:监听:等...) 05年时开发了第一代: 08年时开发了第二代,那时候进入互联网 ...

  6. 数据库ORM框架GreenDao

    常用的数据库: 1). Sql Server2). Access3). Oracle4). Sysbase5). MySql6). Informix7). FoxPro8). PostgreSQL9) ...

  7. 轻量级ORM框架初探-Dapper与PetaPoco的基本使用

    一.EntityFramework EF是传统的ORM框架,也是一个比较重量级的ORM框架.这里仍然使用EF的原因在于为了突出轻量级ORM框架的性能,所谓有对比才有更优的选择. 1.1 准备一张数据库 ...

  8. 一行代码调用实现带字段选取+条件判断+排序+分页功能的增强ORM框架

    问题:3行代码 PDF.NET是一个开源的数据开发框架,它的特点是简单.轻量.快速,易上手,而且是一个注释完善的国产开发框架,受到不少朋友的欢迎,也在我们公司的项目中多次使用.但是,PDF.NET比起 ...

  9. ORM框架-VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.5

    摘要:VB/C#.Net实体代码生成工具(EntitysCodeGenerate)[ECG]是一款专门为.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的程序代码基于OO.ADO.N ...

随机推荐

  1. 小程序wx.navigateTo和wx.redirectTo 都无效

    最近在写小程序,遇到页面跳转时,发现有几次失败.查询资料已解决,总结一下知识点: 一.如下,第5层到到6层时失败(评论页⑤-->返回商品详情页⑥) 登陆①-->主页②-->商品列表页 ...

  2. unity(c# ioc框架) 使用总结

    这里的unity指的是完成依赖注入的unity而不是游戏引擎. 原本项目完成依赖注入用的是spring.net,但是spring.net已经很久没人维护了,所以微软官方推出的Unity成为了替代spr ...

  3. 【Unity3D与23种设计模式】享元模式(Flyweight)

    GoF中定义: "使用共享的方式,让一大群小规模对象能更有效地运行" 享元模式一般应用在游戏角色属性设置上 游戏策划需要通过"公式计算"或者"实际测试 ...

  4. 设计模式——备忘录模式(C++实现)

    #include <iostream> #include <string> #include <vector> using namespace std; class ...

  5. 笔记:I/O流-文件操作

    Java库中使用 Path 和 Files 类封装了在用户机器上处理文件系统所需要的所有功能,可以使用Paths来获取一个具体的Path对象,来表示具体的路径. 路径 Path表示的是一个目录名序列, ...

  6. 制作Linux登录欢迎界面

    1.登录提示语: 将提示语写入/etc/motd 文件 _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ ...

  7. 【R语言系列】作图入门示例一

    假设有如下数据,我们使用plot函数作图 月龄 体重 月龄 体重  1 4.4 9 7.3 3 5.3 3 6.0 5 7.2 9 10.4 2 5.2 12 10.2 11 8.5 3 6.1 R语 ...

  8. python全栈开发-Day12 三元表达式、函数递归、匿名函数、内置函数

    一. 三元表达式 一 .三元表达式 仅应用于: 1.条件成立返回,一个值 2.条件不成立返回 ,一个值 def max2(x,y): #普通函数定义 if x > y: return x els ...

  9. vim的配置

    修改根目录下.vimrc文件: 1.设定解码,支持中文 set fileencodings=utf-8,ucs-born,gb18030,gbk,gb2312,cp936 set termencodi ...

  10. C博客作业--指针

    一.PTA实验作业 题目1:输出月份英文名 1. 本题PTA提交列表 2. 设计思路 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明. 选择这一题是因为这道题的通过率较低.为什么会这样 ...