Moon.Orm 5.0(MQL版)使用指南(二)
一、使用sql及存儲過程
1)使用List<Dictionary<string, MObject>>
1.使用sql ,體驗原生態的感覺
string sql2= "select * from Class where DateTimem = @";
List<Dictionary< string, MObject>> mylist=db. ExecuteSqlToDictionaryList(sql, "boy'");
List<Dictionary< string, MObject>> mylist2=db. ExecuteSqlToDictionaryList(sql2,DateTime. Parse( "2013-10-10 14:40:08"));
string className=oneClass[ "className"].To< string>();
long id=oneClass[ "Classid"].To< long>();
DateTime datetimem=oneClass[ "datetimem"].To<DateTime>();//不用區分大小寫
Console. WriteLine(className+ " "+id+ " "+datetimem);
}
2.使用mql,智能感知帶來的優雅體驗
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
2.6 MQL的使用預覽
2.6 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)));
}
3)使用DataSet
1.使用存儲過程
2.使用sql
3.使用mql
4)使用xml配置sql查詢
1.配置config節點
<add key="SQL_XML_FILE_NAME" value="C:\Moon\Moon.Orm\sql.xml"></add>// 如果不是全路徑,則默認在dll生成目錄
</appSettings>
2.配置xml(sql.xml)
<sqls>
<sqlxml id="getname">
<sql>select name from user where id>@ </Sql>
<description>查詢用戶名(描述信息) </Description>
</sqlxml>
</sqls>
5)sql之王者歸來
使用GetDynamicList ,讓你體驗另一種自由
dynamic list22=db. GetDynamicList(sql22, "Score");
foreach( var a in list22){
Console. WriteLine(a.ID+ "--"+a.ScoreM+ "--"+a.UserID+ "--"+a.TypeName);// 都是強類型
}
以下是體驗強類型:)
請加入第二個群