讓我們開啟數據庫無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直接存入字典,具體字段后置到獲取時,性能這個大家一試便知.

 

 

 項目及文檔下載:

      點此下載(記得支持)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM