一、Moon.Orm框架總述 (您還用hibernate?實體框架?)
1.框架名:Moon 意思是月亮,而非Mono.因為很喜歡明月,所以以此為名.它是一個.NET下的Orm框架.
2.發展歷史:歷經近乎三年的發展歷程,起因是EF框架的起初性能原因,為項目實戰而生.
3.項目經驗:經過數家公司項目實戰、以及眾多用戶的肯定.
Moon.Orm的追求方向:
1)高性能.
連接地址: Moon洗冤錄
2)易用性強
3)多數據庫多數據源支持
如果您需要換數據庫:直接修改配置文件然后一鍵生成實體層即可;
如果您需要多數據庫:直接添加配置文件即可.詳情: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的標准查詢
Where(ClassSet.ClassName.Contains("s").And(ClassSet.ClassID.BiggerThan(9)));
@p1=%s%
@p2=9
2.2 MQL的嵌套查詢(含有Top查詢:支持mysql、oracle、postgreSQL、sqlserver、sqlite)
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);
@p1=綜合測試ClassName2
@p2=0
2.3 MQL的分組查詢
Where(ScoreSet.ScoreM.BiggerThanOrEqual(100)).
GroupBy(ScoreSet.TypeName).
Having(ScoreSet.ScoreM.Sum().BiggerThan(300));
@p1=100
@p2=300
2.4 MQL的連接查詢
. LeftJoin(
UserSet. Select(UserSet.UserID))
. ON(ClassSet.ClassID. Equal(UserSet.UserID))
. Where(UserSet.UserID. BiggerThan( 9));
@p1=9
2.5 MQL的Union查詢
. Union(ClassSet. SelectAll(). Where(ClassSet.ClassID. BiggerThan( 2)));
. UnionAll(ClassSet. SelectAll(). Where(ClassSet.ClassID. BiggerThan( 2)));
@p1=1
@p2=2
@p1=1
@p2=2
3.MQL查詢結果預覽
{
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)開源發布
2)之后的版本步步開源,對於參與者提供源代碼.
當然您可以資金支持.十塊錢那也是支持,請注明,您的郵箱地址.
5.0社區版代碼生成器下載:http://www.cnblogs.com/humble/p/3312018.html
四、Moon.Orm的技術文檔
如果您喜歡它,請推薦支持一下吧:)
待續