打造Orm经典,创CRUD新时代,Orm的反攻战
让我们开启数据库无Linq、零sql时代(续)
第一部分 MQL
qq群:225656797
demo下载: 点此下载(既然下载,就支持该文,关注我的博客)
1.MQL概述
MQL是Moon.Orm 5.0中的全新设计,是在之前版本的革命性的升级.目的在于让我们的数据库开发打造为无Linq、零sql.它全面贴近标准sql,噪音低.原生.NET2.0支持、高性能、语法糖.多数库多数据源支持、操作便捷简单.
使用场景:1.NET 2.0; 2.觉得其他Orm性能低;3不喜欢linq;4.想更加便捷用sql
说明:一下以sqlserver为例.
2.MQL查询分类讲解
2.1 MQL的标准查询
)));
@p1=%s%
@p2=9
2.2 MQL的嵌套查询(含有Top查询:支持mysql、oracle、postgreSQL、sqlserver、sqlite)
ScoreSet.UserID.In(UserSet.Select(UserSet.UserID).Where(
UserSet.ClassID.In(
ClassSet.Select(ClassSet.ClassID).Where(
ClassSet.ClassName.))
)
)
)
)
).);
@p1=综合测试ClassName2
@p2=0
2.3 MQL的分组查询
)).
GroupBy(ScoreSet.TypeName).
));
@p1=100
@p2=300
2.4 MQL的连接查询
.LeftJoin(
UserSet.Select(UserSet.UserID))
.ON(ClassSet.ClassID.Equal(UserSet.UserID))
.));
@p1=9
2.5 MQL的Union查询
.)));
.)));
@p1=1
@p2=2
@p1=1
@p2=2
3.MQL查询结果预览
{
using (var db=Db.CreateDefaultDb()) {
db.TransactionEnabled=true;
db.DebugEnabled=true;
Console.WriteLine("---------------嵌套查询---------------------");
var qiantao=ScoreSet.SelectAll().Where(
ScoreSet.UserID.In(UserSet.Select(UserSet.UserID).Where(
UserSet.ClassID.In(
ClassSet.Select(ClassSet.ClassID).Where(
ClassSet.ClassName.))
)
)
)
)
).);
Console.WriteLine("---------------分组查询---------------------");
)).));
Console.WriteLine("---------------连接查询---------------------");
var m1=ClassSet.Select(ClassSet.ClassID,ClassSet.ClassName)
.LeftJoin(
UserSet.Select(UserSet.UserID))
.ON(ClassSet.ClassID.Equal(UserSet.UserID))
.));
}
Console.WriteLine("---------------Union测试---------------------");
using (var db=Db.CreateDefaultDb()) {
db.TransactionEnabled=true;
db.DebugEnabled=true;
))
.)));
}
}
第二部分 Moo.Orm数据操作篇
1.Moon.Orm初始化说明
1.1 配置文件说明
1.1.1默认配置
<add name="DefaultConnection"
connectionString="Server=QSC-E15014A6665\SQLEXPRESS;Database=Test;uid=sa;Password=123456;" providerName="Moon.Orm,Moon.Orm.SqlServer" />
</connectionStrings>
}
1.1.2其它配置
(详情见:Moon.Orm 5.0 (MQL版) 配置说明)
<add name="MyqlConnection"
connectionString="mysql连接字符串"
providerName="Mysql自定义dllName,Mysql命名空间...类名" />
</connectionStrings>
}
1.2 通过字符串直接初始化
}
2.Moon.Orm开启事务
db.TransactionEnabled=true;
//随便写许多逻辑,一个事务都在这个{}中
}
3.Moon.Orm开启调试模式
db.DebugEnabled=true;
var mql=ScoreSet.Select(ScoreSet.ScoreM.Sum().AS("sum"),ScoreSet.TypeName).
)).GroupBy(ScoreSet.TypeName).
));
}
4.Moon.Orm开启缓存模式
db.StartCache(秒数);//查询用的缓存
}
5.Moon.Orm添加数据
db.DebugEnabled=true;
Class c=new Class();
c.ClassName="综合测试ClassName2";
db.Add(c);
}
6.Moon.Orm删除数据
}
7.Moon.Orm更新数据
db.Update(c);
}
8.Moon.Orm查询数据
8.1无实体类时,使用代码生成器生成实体类
8.2无需实体类
var m1=ClassSet.Select(ClassSet.ClassID,ClassSet.ClassName)
var list2=db.GetDictionaryList(m1);
//-----------------------------2.用sql语句------------------------------
8.3使用存储过程
第三部分 MQL的邀请
MQL的现状:
1.目前完成了sqlserver sqlite oracle、mysql
的开发工作. 还需要postgreSQL、、db2的核心功能的开发,当然接口和核心模块都写好了,各类型数据库的模块我们需要实现基类即可.再次发出邀请,请您加入,发邮件给我 qsmy_qin@163.com
2.目前我们写代码生成器(已经支持sqlserver sqlite 、mysql),你可以加入写其他数据库的生成.
您的加入只需实现接口
您的参与,将奖励:
该版本的源代码
2013-11-3 20:01:12
打造Orm经典,创CRUD新时代,Orm的反攻战的更多相关文章
- MEAN实践——LAMP的新时代替代方案(上)
摘要:90 年代,LAMP 曾风靡一时,然而随着需求的变迁和数据流量的激增,LAMP 已不可避免的走下神坛.近日,在 MongoDB Blog 中,Dana Groce 介绍了一个基于新时代架构的实践 ...
- 全景智慧城市——VR全景,开启VR营销新时代
全景是一种新兴的富媒体技术. 与视频.声音.图片等传统主流媒体最大的区别是"可操作,可交互". 全景给人以三维立体感觉的实景360°全方位图像,此图像最大的三个特点: 全方位:展示 ...
- BGV作为拥抱新时代的DeFi项目,是否有能力超越YFI?
随着今年11月DeFi蓝筹股们的集体反弹,市场变化让投资者明白,不能再死守诸如COMP和MKR的古典DeFi了,只有拥抱新时代的DeFi们才有赚钱的可能,不要和钱过不去.经过9-10月的回调,11月的 ...
- GVS案例分享|乘新时代姑苏舫号,体验匠心智能控制
水,是苏州的灵魂,串起苏州的古与今.动与静.金鸡湖景区位于苏州工业园区,总面积11.5平方公里,其中水域面积7.4平方公里. 新时代姑苏舫号,是金鸡湖景区极具苏式特征且规格超高的游览船型.船体分为上下 ...
- 什么是ORM思想?常用的基于ORM的框架有哪些?各有什么特点?
ORM的全称是Object-Relational Mapping,即对象关系映射.ORM思想的提出来源于对象与关系之间相悖的特性.我们很难通过对象的继承与聚合关系来描述数据表中一对一.一对多以及多对多 ...
- 组合式应用新利器?SaaS新时代事件网格如何解决集成标准化问题
摘要:组合式应用需要面临的一个难题是如何解决各个应用之间的集成标准问题,比如应用可能仅支持HTTP.TCP等协议中的一种,而缺乏统一的通讯标准就给业务落地该架构带来了困难.下面介绍事件网格(Event ...
- C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)
反射以及Attribute在ORM中的应用 一. 反射什么是反射?简单点吧,反射就是在运行时动态获取对象信息的方法,比如运行时知道对象有哪些属性,方法,委托等等等等.反射有什么用呢?反射不但让你在运行 ...
- Vimer的福音 新时代的Vim C++自动补全插件 clang_complete
使用vim的各位肯定尝试过各种各样的自动补全插件,比如说大名鼎鼎的 OmniCppComplete .这一类的插件都是对 Ctags 生成的符号表进行字符串匹配来获得可能的补全项.他们在编写 C 代码 ...
- 新时代的Vim C++自动补全插件 clang_complete
Vimer的福音 新时代的Vim C++自动补全插件 clang_complete 使用vim的各位肯定尝试过各种各样的自动补全插件,比如说大名鼎鼎的 OmniCppComplete .这一类的插 ...
随机推荐
- jetty项目中静态文件不能修改问题
修改web.xml 在web.xml中加入如下代码: <servlet> <servlet-name>default</servlet-name> <serv ...
- Ubuntu Server无线连接配置
由于Ubuntu Linux内核对于WPA的加密方式支持不是很好,所有使用普通方式的命令行无法连接WPA2类型的路由.首先检查是否安装了wpasupplicant,Ubuntu 10.04已经安装了 ...
- WPF计算
设计思路: 用WPF窗体设计,在第一个数和第二个数的文本框中输入数值,单击录题按钮,数值保存在n1,n2文档中,把要做的题都保存完后,单击开始按钮,开始做题,每做完一道题,按Enter键,进入下一题, ...
- Navsion二次开发_学习笔记
CodeUnit Note This feature is documented in the Navision Application Server Technical White Paper. ...
- 《.NET之美》消息及勘误
<.NET之美>消息及勘误 编辑最终还是采用了<.NET之美>作为书名,尽管我一直觉得这个名字有点文艺了,而更倾向于使用<.NET专题解析>这个名称. 目前已经可以 ...
- Microsoft dotnetConf 2015 一些整理
dotnetConf 2015 直播计划: 第一天 (10 个主讲) - .NET Product Teams 主讲人为 .NET 产品开发团队,.NET 产品主要包含 .NET Core.ASP.N ...
- iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
-- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事 ...
- XCode的个人使用经验
Xcode是强大的IDE(但个人觉得不如Visual Studio做得好),其强大功能无需本人再赘述,本文也不是一篇“快捷键列表”,因为XCode上的快捷键极其多,而且还有不少是需要同时按下四个按键的 ...
- 企业IT管理员IE11升级指南【1】—— Internet Explorer 11增强保护模式 (EPM) 介绍
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- tornado 学习笔记9 Tornado web 框架---模板(template)功能分析
Tornado模板系统是将模板编译成Python代码. 最基本的使用方式: t = template.Template("<html>{{ myv ...