天天看点

一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务

     前面的四篇文章演示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         /// &lt;summary&gt;

 2         /// 取记录最大号。

 3         /// &lt;/summary&gt;

 4         /// &lt;returns&gt;&lt;/returns&gt;

 5         public int GetMaxIdn()

 6         {

 7             return (int)this.DataAccessor.Query("select isnull(max(idn),0) maxid from " + this.DbTableName);

 8         }

 9 

10         /// &lt;summary&gt;

11         /// 取记录最大号。

12         /// &lt;/summary&gt;

13         /// &lt;returns&gt;&lt;/returns&gt;

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         /// &lt;summary&gt;

28         /// 演示读取一条记录。

29         /// &lt;/summary&gt;

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