Surprise Data Query:令人驚訝的資料查詢(簡:SDQ)
一、SDQ的概念
“Surprise Data Query”定位為輕量級的,爭對企業級儲存應用(尤其適用電子政務)的O/RM工具。它擴充了OPS的能力,增強了OPS使用者基於OPS的更快速資料存放區與展示能力;利用SDQ與OPS只需使用極少數的代碼即完成一張表單的資料存放區與展示,從而使項目儘可能的提前完成及擁有更好的代碼品質(更少)。
使用SDQ的開發人員:
1,可以更快速的進行資料存放區與展示;
2,可以獲得具有強型別驗證的查詢體驗;
3,可以實現更開放的模組化開發。
所謂更快速的進行資料存放區與展示,是因為SDQ為OPS提供了完美的支援,使得OPS XML資料可以直接綁定給SDQ實體,然後SDQ實體與資料庫表進行同步;同時SDQ的查詢結果可直接返回OpsDom,為OPS操作提供便捷的支援。(參考樣本3,4)
所謂擷取具有強型別驗證的查詢,是指SDQ的查詢機制完全由C#實現,所有的查詢與條件的完成都是物件導向的操作。(參考樣本1,2,3)
所謂實現更開放的模組化開發。SDQ的資料表模型(實體)具體很強的可控性,可以在模型上定義顯示列或AS成新的名字,基於此基礎以及關聯查詢完成可定製性,使得SDQ的資料表模型可以成為良好的介面參數。從而具有SDQ介面的模組,可以實現更獨立內部結構和更靈活的對外介面。(參考樣本 5)
樣本1:對三張表,進行關聯查詢,並返回一個DataTable(使用SDQ引擎進行查詢)
SQRun sq = new SQRun();
sq.From(res)
.InnerJoin(link,).On(res.RSID ==link.RSID)
.InnerJoin(pkg).On(pkg.PGID ==link.LK_OBJT_ID);
sq.Where(pkg.R_PGID == Package.DEFINE)
.And(PKG.Level == 2)
sq.Select();
樣本2: 實體根據條件查詢並進行資料填充; (直接使用表模型進行查詢)
Group group = new Group();
group.Where(group.ID == 100);
group.Fill();
樣本3: 實體根據條件查詢並返回一個OpsDom; (直接使用表模型進行查詢)
Group group = new Group();
group.Where(group.ID == 100);
group.SelectOps();
樣本4: 綁定OPS XML資料,並與資料庫進行同步(直接使用表模型進行儲存)
Group group = new Group();
group.Bind(opsXml);
group.Where(group.ID == 100);
group.Synchronize();
樣本5:模型作為資料介面參數
Group group = new Group();
if(usingEn)
...{
group.M.CN_Name.IsInc = false;
group.M.EN_Name.IsInc = true;
group.EN_Name = name;
}
else
...{
group.M.CN_Name.IsInc = true;
group.M.EN_Name.IsInc = false;
group.CN_Name = name;
}
GroupService.SaveGroup(group);
二、OPS的概念
請參考《Oriented Page Storage(OPS)簡介》,待