设为首页 收藏本站
查看: 970|回复: 0

[经验分享] Moon.Orm 常见查询实例

[复制链接]

尚未签到

发表于 2016-11-22 09:44:20 | 显示全部楼层 |阅读模式
一、Moon.Orm框架总述 (您还用hibernate?实体框架?)
  1.框架名:Moon 意思是月亮,而非Mono.因为很喜欢明月,所以以此为名.它是一个.NET下的Orm框架.
  2.发展历史:历经近乎三年的发展历程,起因是EF框架的起初性能原因,为项目实战而生.
  3.项目经验:经过数家公司项目实战、以及众多用户的肯定.

qq群:225656797 Moon.Orm的追求方向:
1)高性能.

这也是架构创建的目的之一,已经将它的性能提升到了极致.大家可以自己测试.我可以说其性能是数一数二的.
连接地址:Moon洗冤录2)易用性强

我想,用过Moon.ORM的应该可以知道这点.配置简单,智能感知,代码生成器的辅助,会sql就可使用之.
详情见,连接地址:Moon使用配置说明3)多数据库多数据源支持

在同一个项目中我们常常需要处理这些情况时.目前moon的目标,支持sqlserver sqlite oracle mysql postgreSQL db2  如果您需要换数据库:直接修改配置文件然后一键生成实体层即可;
  如果您需要多数据库:直接添加配置文件即可.详情:Moon使用配置说明
4)智能感知
  这个不用讲了,值得一提的是MQL,她能够为你提供强大的智能感知功能,并且无数据库类型差异.
  详情:MQL无linq化的战役
5).NET 2.0原生支持.
  有人问:为什么没有LINQ、lambda,其实我只想说:没有必要做这些了,因为微软一个团队在做实体框架,去做一些不必要的事情,
  真的没有意思. 觉得MQL复杂的兄弟们,有了智能感知,你们就适应适应,因为这是萝卜白菜的问题.
6) 使用便捷.
  这个其实上面的链接也谈到,详情见:http://www.cnblogs.com/humble/p/3293500.html

二、Moon.Orm的功能预览

2.MQL查询分类讲解
2.1 MQL的标准查询


var mm=ClassSet.Select(ClassSet.ClassID,ClassSet.ClassName).  Where(ClassSet.ClassName.Contains("s").And(ClassSet.ClassID.BiggerThan(9)));

SELECT [Class].[ClassID],[Class].[ClassName] FROM [Class] WHERE [Class].[ClassName] LIKE @p1  AND  [Class].[ClassID]>@p2
@p1=%s%
@p2=92.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.Equal(c.ClassName).And(ClassSet.ClassID.BiggerThan(0))
                             )
                         )
                     )
                   )
                 ).Top(1);  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).  Where(ScoreSet.ScoreM.BiggerThanOrEqual(100)).
  GroupBy(ScoreSet.TypeName).
  Having(ScoreSet.ScoreM.Sum().BiggerThan(300));

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))
                     .Where(UserSet.UserID.BiggerThan(9));
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查询

var mql=ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(1))
                     .Union(ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(2)));
var mql=ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(1))
                     .UnionAll(ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(2)));
SELECT [Class].* FROM [Class] WHERE  [Class].[ClassID]>@p1   UNION  SELECT [Class].* FROM [Class] WHERE  [Class].[ClassID]>@p2
@p1=1
@p2=2
SELECT [Class].* FROM [Class] WHERE  [Class].[ClassID]>@p1   UNION ALL SELECT [Class].* FROM [Class] WHERE  [Class].[ClassID]>@p2
@p1=1
@p2=23.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.Equal(c.ClassName).And(ClassSet.ClassID.BiggerThan(0))
                             )
                         )
                     )
                   )
                 ).Top(1);
                 
                 Console.WriteLine("---------------分组查询---------------------");
                 var mql=ScoreSet.Select(ScoreSet.ScoreM.Sum().AS("sum"),ScoreSet.TypeName).Where(ScoreSet.ScoreM.BiggerThanOrEqual(100)).GroupBy(ScoreSet.TypeName).Having(ScoreSet.ScoreM.Sum().BiggerThan(300));
               
                 Console.WriteLine("---------------连接查询---------------------");
                 var m1=ClassSet.Select(ClassSet.ClassID,ClassSet.ClassName)
                     .LeftJoin(
                     UserSet.Select(UserSet.UserID))
                     .ON(ClassSet.ClassID.Equal(UserSet.UserID))
                     .Where(UserSet.UserID.BiggerThan(9));  }
             Console.WriteLine("---------------Union测试---------------------");
             using (var db=Db.CreateDefaultDb()) {
                 db.TransactionEnabled=true;
                 db.DebugEnabled=true;
                 
                 var mql=ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(1))
                     .Union(ClassSet.SelectAll().Where(ClassSet.ClassID.BiggerThan(2)));  

            }
         }

三、Moon.Orm的开源发布
1)Moon.Orm 5.0之前的版本以(LGPL)开源发布

https://sourceforge.net/projects/moonorm/2)之后的版本步步开源,对于参与者提供源代码.

如果您参与Moon.Orm的核心开发或辅助平台开发,您将直接获得5.0的源代码,有意者联系:qsmy_qin@163.com  当然您可以资金支持.十块钱那也是支持,请注明,您的邮箱地址.

5.0框架下载:http://www.cnblogs.com/humble/p/3298594.html
  5.0社区版代码生成器下载:http://www.cnblogs.com/humble/p/3312018.html

四、Moon.Orm的技术文档
  如果您喜欢它,请推荐支持一下吧:)
待续

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303851-1-1.html 上篇帖子: 四种mysql可视化操作工具的对比 下篇帖子: Alfresco 4 项目介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表