前面的四篇文章示範ORM的一些正常操作與配置,通過前面的文章,應用開發人員要可以使用ORM開發出簡單的應用,但是,ORM也不是萬能鑰匙,在業務應用中,還有很多是ORM解決不了的問題,對于這些問題,我們必須景借助于SQL語句。
既然ORM解決不了所有的問題,我們得借助于SQL語句,也就是我們可以了解為在DAL層,在ORM對象中,還得支援SQL的操作:
<a href="http://images.cnblogs.com/cnblogs_com/eastjade/WindowsLiveWriter/AgileEAS.NETSQL_98E9/%5B3A0DOVP)2C9%5BUV9(~OB6%24S_2.jpg"></a>
AgileEAS.NET平台中的ORM提供了這種支援,他通過了ORM對象提供的DataAccessor屬性完成SQL語句的查詢與執行,即在ORM元件中支援下的程式寫法:
this.DataAccessor.Execute(sql語句,參數)。
本文的示範我将在前面的示範的基礎之上示範實作取得商品字典中最大的IDN号的實作,首先我們修改ClassLibDemo.DAL.SQLServer項目的Product.cs檔案,在類Product中增加如下代碼:
1 /// <summary>
2 /// 取記錄最大号。
3 /// </summary>
4 /// <returns></returns>
5 public int GetMaxIdn()
6 {
7 return (int)this.DataAccessor.Query("select isnull(max(idn),0) maxid from " + this.DbTableName);
8 }
9
10 /// <summary>
11 /// 取記錄最大号。
12 /// </summary>
13 /// <returns></returns>
14 public int GetMaxNewIdn()
15 {
16 return (int)this.DataAccessor.Query("select isnull(max(idn),0)+1 maxid from " + this.DbTableName);
17 }
然後我們在ClassLib.OrmDemo項目的DataObjectDemo增加如下代碼:
2 /// 示範增加一條記錄。
4 public void DemoInsert2()
5 {
6 Product product = new Product();
7 product.OrmAccessor = OrmContext.OrmAccessor;
8
9 product.Idn = product.GetMaxNewIdn();
10 product.Code = "AXX-" + product.Idn.ToString("D6");
11 product.Name = "台式電腦";
12 product.Spec = "主流配置/扣肉i7/21顯示";
13 product.Unit = "台/套";
14 product.Description = string.Empty;
15
16 try
17 {
18 product.Insert();
19 System.Console.WriteLine("成功插入記錄");
20 }
21 catch (System.Exception exc)
22 {
23 System.Console.WriteLine("插入記錄出錯:" + exc.Message);
24 }
25 }
26
27 /// <summary>
28 /// 示範讀取一條記錄。
29 /// </summary>
30 public void DemoQuery2()
31 {
32 Product product = new Product();
33 product.OrmAccessor = OrmContext.OrmAccessor;
34 product.Code = "AXX-" + product.GetMaxIdn().ToString("D6");
35 product.Refresh(); //讀資料
36
37 if (product.Exists)
38 {
39 System.Console.WriteLine(string.Format("已查詢以記錄:Idn={0}\tCode={1}\tName={2}\tSpec={3}\tUnit={4}\tDescription={5}", product.Idn, product.Code, product.Name, product.Spec, product.Unit, product.Description));
40 }
41 else
42 {
43 System.Console.WriteLine("不存在此記錄");
44 }
45 }
流程主要代碼中增加如下代碼:
編譯運作,輸出結果:
連結
<a href="http://www.cnblogs.com/eastjade/archive/2010/09/19/1830812.html">一步一步教你使用AgileEAS.NET基礎類庫進行應用開發-系列目錄</a>
<a href="http://www.cnblogs.com/eastjade/archive/2010/09/12/1824405.html">AgileEAS.NET平台開發指南-系列目錄</a>
<a href="http://www.cnblogs.com/eastjade/archive/2010/09/09/1822530.html">AgileEAS.NET應用開發平台介紹-文章索引</a>
<a href="http://www.cnblogs.com/eastjade/archive/2010/09/15/1826870.html">AgileEAS.NET平台應用開發教程-案例計劃</a>
<a href="http://www.smarteas.net/">AgileEAS.NET官方網站</a>
<a href="http://www.agilelab.cn/">靈活軟體工程實驗室</a>
QQ群:116773358
本文轉自 agilelab 51CTO部落格,原文連結:http://blog.51cto.com/agilelab/603030