让我们开启数据库无Linq、零sql时代
让我们开启数据库无Linq、零sql时代
Moon.Orm 5.0总论
第一部分 MQL
1、MQL预览
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);
//left join 查询
var mql2 =Join.Left(m1,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直接存入字典,具体字段后置到获取时,性能这个大家一试便知.
项目及文档下载: