首页 技术 正文
技术 2022年11月12日
0 收藏 514 点赞 4,112 浏览 27741 个字

让我们开启数据库无Linq、零sql时代(续)

第一部分 MQL

qq群:225656797

demo下载: 点此下载(既然下载,就支持该文,关注我的博客)

Moon.Orm 5.0 (MQL版) 版本维护及下载 (跟踪发布)Moon.Orm 5.0系列文章

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的标准查询

var mm=ClassSet.Select(ClassSet.ClassID,ClassSet.ClassName).

)));

SELECT [Class].[ClassID],[Class].[ClassName] FROM [Class] WHERE [Class].[ClassName] LIKE @p1  AND  [Class].[ClassID]>@p2
@p1=%s%
@p2=9

2.2 MQL的嵌套查询(含有Top查询:支持mysql、oracle、postgreSQL、sqlserver、sqlite)

var qiantao=ScoreSet.SelectAll().Where(
                    ScoreSet.UserID.In(UserSet.Select(UserSet.UserID).Where(
                        UserSet.ClassID.In(
                        ClassSet.Select(ClassSet.ClassID).Where(
                                ClassSet.ClassName.))
                            )
                        )
                    )
                  ) 
                ).);SELECT TOP 1 [Score].* FROM [Score] WHERE [Score].[UserID] IN (SELECT [User].[UserID] FROM [User] WHERE [User].[ClassID] IN (SELECT [Class].[ClassID] FROM [Class] WHERE [Class].[ClassName]=@p1  AND  [Class].[ClassID]>@p2 ) )
@p1=综合测试ClassName2
@p2=0

2.3 MQL的分组查询

var mql=ScoreSet.Select(ScoreSet.ScoreM.Sum().AS(“sum”),ScoreSet.TypeName).

)).

GroupBy(ScoreSet.TypeName).

));

SELECT SUM([Score].[ScoreM]) AS ‘sum’,[Score].[TypeName] FROM [Score] WHERE  [Score].[ScoreM]>=@p1  GROUP BY [Score].[TypeName]  HAVING  SUM([Score].[ScoreM])>@p2
@p1=100
@p2=300

2.4 MQL的连接查询

var m1=ClassSet.Select(ClassSet.ClassID,ClassSet.ClassName)
                    .LeftJoin(
                    UserSet.Select(UserSet.UserID))
                    .ON(ClassSet.ClassID.Equal(UserSet.UserID))
                    .));SELECT [Class].[ClassID],[Class].[ClassName],[User].[UserID] FROM [Class] LEFT JOIN [User] ON [Class].[ClassID]=[User].[UserID]  WHERE  [User].[UserID]>@p1
@p1=9

2.5 MQL的Union查询

))
                    .)));))
                    .)));SELECT [Class].* FROM [Class] WHERE  [Class].[ClassID]>@p1  UNION  SELECT [Class].* FROM [Class] WHERE  [Class].[ClassID]>@p2
@p1=1
@p2=2SELECT [Class].* FROM [Class] WHERE  [Class].[ClassID]>@p1  UNION ALL SELECT [Class].* FROM [Class] WHERE  [Class].[ClassID]>@p2
@p1=1
@p2=2

3.MQL查询结果预览

public static void Main(string[] args)
        {
            
            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;
                
                ))
                    .)));

}
        }<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAp0AAAG2CAIAAACyNKoBAAAgAElEQVR4nO2d3c89S1bX9//gC4k3muiFeGHCkNEZNRgSSE5CAoNiQlAZTE6CMcjhKIyCCigjAiI6yNthQEFQRh1EHEVJNPSNiZdeeHEMGp3D+DIKOZ47ohfHi4fZ1FNrrW+t6u7qrt3P55POL93Vq9Zatbq6v7v23s/+3d55+y02NjY2Nja2C2yvv/bq7Z2333oXAAAAHpyPf+yNX9f1//Dv/x0bGxsbGxvb4261rv/yp99kY2NjY2Nje8TN1/Vv+oH/cuL2F36we/uLP9S1/de/9Eb39s0/3L19y0fz2ye/5aOf/NYf6d7+8o92b3/l72S2t+7bt/3d7u3DP9a3/dUfz2y/VG7f/ve6t7/2E33bd/yk3j5lt+/8+93bd/2Dvu2v/5TY/pu7fffH+ra/8Q+7t+/5R+7238X2N/9×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" alt="" width="538" height="353" />

第二部分 Moo.Orm数据操作篇

1.Moon.Orm初始化说明

1.1 配置文件说明

1.1.1默认配置

<connectionStrings>
        <add name=”DefaultConnection”
             connectionString=”Server=QSC-E15014A6665\SQLEXPRESS;Database=Test;uid=sa;Password=123456;”             providerName=”Moon.Orm,Moon.Orm.SqlServer”  />
</connectionStrings>using (var db=Db.CreateDefaultDb()) {

}

1.1.2其它配置

(详情见:Moon.Orm 5.0 (MQL版) 配置说明)

<connectionStrings>
        <add name=”MyqlConnection”
             connectionString=”mysql连接字符串”   

providerName=”Mysql自定义dllName,Mysql命名空间…类名”  />
</connectionStrings>

using (var db=Db.CreateDbByConfigName(“MysqlConnection”)) {

}

1.2 通过字符串直接初始化

using (var db=new SqlServer(“连接字符串”) {

}

2.Moon.Orm开启事务

using (var db=Db.CreateDefaultDb()) {
                db.TransactionEnabled=true;

//随便写许多逻辑,一个事务都在这个{}中

}

3.Moon.Orm开启调试模式

using (var db=Db.CreateDefaultDb()) {
                db.DebugEnabled=true;

var mql=ScoreSet.Select(ScoreSet.ScoreM.Sum().AS(“sum”),ScoreSet.TypeName).

)).GroupBy(ScoreSet.TypeName).

));

                var sql=mql.ToDebugSQL();//可以查看当前查询语句

}

4.Moon.Orm开启缓存模式

using (var db=Db.CreateDefaultDb()) {
                db.StartCache(秒数);//查询用的缓存

}

5.Moon.Orm添加数据

using (var db=Db.CreateDefaultDb()) {
                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无实体类时,使用代码生成器生成实体类

List<T> ExecuteSqlToOwnList<T>(string sql)where T:new() List<T> ExecuteSqlToOwnList<T>(string sql,params object[] values)where T:new()List<T> GetOwnList<T>(MQLBase mql) where T: new()

8.2无需实体类

//—————————–1.用MQL————————————– List<Dictionary<string,MObject>> GetDictionaryList(MQLBase mql)

var m1=ClassSet.Select(ClassSet.ClassID,ClassSet.ClassName)

                .));

var list2=db.GetDictionaryList(m1);

//—————————–2.用sql语句——————————

List<Dictionary<string,MObject>> ExecuteSqlToDictionaryList(string sql)List<Dictionary<string,MObject>> ExecuteSqlToDictionaryList(string sql,params object[] values)//支持参数化DataSet ExecuteSqlToDataSet(string sql)DataSet ExecuteSqlToDataSet(string sql,params object[] values)int ExecuteSqlWithNonQuery(string sql)

8.3使用存储过程

DataSet ExecuteProToDataSet(String procName,params DbParameter[] parameters)int ExecuteProWithNonQuery(String procName,params DbParameter[] parameters)List<T> ExecuteProToOwnList<T>(String procName,params DbParameter[] parameters)where T:new()

第三部分 MQL的邀请

MQL的现状:

1.目前完成了sqlserver sqlite oracle、mysql
的开发工作. 还需要postgreSQL、、db2的核心功能的开发,当然接口和核心模块都写好了,各类型数据库的模块我们需要实现基类即可.再次发出邀请,请您加入,发邮件给我 qsmy_qin@163.com

2.目前我们写代码生成器(已经支持sqlserver sqlite  、mysql),你可以加入写其他数据库的生成.
您的加入只需实现接口

您的参与,将奖励:

该版本的源代码

2013-11-3 20:01:12

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289