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

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

Moon.Orm 5.0总论

第一部分 MQL

 

 

1MQL预览

public static void Main(string[] args)
        {
           
            using (SqlServer db=new SqlServer(@"Server=QSC-E15014A6665\SQLEXPRESS;Database=Test;uid=sa;Password=123456;"))

          {
                db.TransactionEnabled=true;
                db.DebugEnabled=true;
               
                Class c=new Class();
                c.ClassName="
综合测试ClassName";
                db.Add(c);
               
                User user=new User();
                user.ClassID=c.ClassID;
                user.UserName="
综合测试UserName";
                db.Add(user);
               
                Score sc=new Score();
                sc.TypeName="
综合测试TypeName";
                sc.UserID=user.UserID;
                sc.ScoreM=100;
                db.Add(sc);
               
               var mql=ScoreSet.SelectAll<ScoreSet>().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)))
                    ))));
                var sql=mql.ToDebugSQL();
                Console.WriteLine(sql);
               
                var list=db.GetEntities<Score>(mql);
                
                foreach (var a in list) {
                    Console.WriteLine(a.UserID+"-"+a.TypeName+"-"+a.ScoreM);
                }
            }
           
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
   }

2、关于MQL

MQL是Moon.Orm 5.0中的全新设计,目的在于让我们的数据库开发打造为无Linq、零sql.它全面贴近标准sql,噪音低.

Linq在数据库开发过程中的存在,对于开发人员而言本质上就是智能感知.或许您不这么认为,会说:面向对象、匿名类型.

--我想说的是,面向对象带来的好处真不明显,一个托词,怎么不说说Linq的弱势呢?可以返回匿名类型,但你直接返给MVC的视图试试,何况还有更伟大的东西.Moon.Orm之前的版本已经实现了.

MQL的构思废了我很多时间,我想值得.

2.1、连接查询

var m1=ClassSet.Select(ClassSet.ClassID,ClassSet.ClassName);
var m2=ClassSet.Select(UserSet.UserID).
LeftJoin(m2).On(ClassSet.ClassID.Equal(UserSet.UserID)).Where(UserSet.UserID.BiggerThan(9));        

2.2、嵌套查询

var mql= ClassSet.Select(ClassSet.ClassID).Where(ClassSet.ClassName.StartWith("0443430").Or(ClassSet.ClassName.StartWith("uu")));

 

var mql =ScoreSet.SelectAll<ScoreSet>().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)))

                    ))));
 
第二部分 Moon.Orm 5.0

1.关于Moon.Orm 5.0

5.0重新借鉴了先前的诸多思想,但从新构思和架构了核心底层(实体层,MQL的加入),也曾经给兄弟说要开源之前的版本(这些天家里不能上网,只能用手机了,大家见谅)如今我也要兑现了.

 

规范:

1.数据库表必须有主键(这不必说)

2.主键:必须与业务无关,且唯一(这是数据库设计的基础,不要被业务牵着走)

3.目前5.0主键支持:自增、GUID

 

1.1简化事务功能.

using (Db db=new SqlServer(@"Server=QSC-E15014A6665\SQLEXPRESS;Database=Test;uid=sa;Password=123456;"))

{
                db.TransactionEnabled=true;

               //---------随便增删改查

}

如上,系统会自动完成{}中的事务操作的.

 

1.2核心重构,标准化整体架构.

您需要了解Db类(上面的SqlServer就继承了)中的方法怎么使用.最好的注释就是不要注释,让大家见名思意.

 


 

 

 

1.3实体获取的性能全面提升

该设计中将实体的数据设置,reader直接存入字典,具体字段后置到获取时,性能这个大家一试便知.

 

 

 项目及文档下载:

      点此下载(记得支持)

 

posted @ 2013-08-24 19:06  [秦时明月]  阅读(4306)  评论(41编辑  收藏  举报