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

简介: 前面的四篇文章演示ORM的一些常规操作与配置,通过前面的文章,应用开发人员要可以使用ORM开发出简单的应用,但是,ORM也不是万能钥匙,在业务应用中,还有很多是ORM解决不了的问题,对于这些问题,我们必须景借助于SQL语句。

          前面的四篇文章演示ORM的一些常规操作与配置,通过前面的文章,应用开发人员要可以使用ORM开发出简单的应用,但是,ORM也不是万能钥匙,在业务应用中,还有很多是ORM解决不了的问题,对于这些问题,我们必须景借助于SQL语句。

本文重点

          既然ORM解决不了所有的问题,我们得借助于SQL语句,也就是我们可以理解为在DAL层,在ORM对象中,还得支持SQL的操作:

[3A0DOVP)2C9[UV9(~OB6$S

          AgileEAS.NET平台中的ORM提供了这种支持,他通过了ORM对象提供的DataAccessor属性完成SQL语句的查询与执行,即在ORM组件中支持下的程序写法:

           this.DataAccessor.Execute(sql语句,参数)。

          有关于UDA对象的使用请参考一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-使用UDA操纵SQL语句一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-UDA中的委托与应用一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-UDA中处理事务三篇文章。

演示的例子

          本文的演示我将在前面的演示的基础之上演示实现取得商品字典中最大的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增加如下代码:

 1           ///   <summary>
 2           ///  演示增加一条记录。
 3           ///   </summary>
 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          }

 

          流程主控代码中增加如下代码:
    System.Console.WriteLine("按任意键继续...");
    System.Console.Read();
    System.Console.WriteLine("演示自定义业务(取最大号Insert)的例子:");
    new DataObjectDemo().DemoInsert2();
    new DataObjectDemo().DemoQuery2();

          编译运行,输出结果:

image           有关本例子所涉及的数据表结构请参考基于AgileEAS.NET平台基础类库进行应用开发-总体说明及数据定义一文,有关数据对象模型定义文件、文档、DDL脚本请下载:http://files.cnblogs.com/eastjade/demo.db.doc.sql.rar,本文代码下载:ORM.Demo5.rar

链接

一步一步教你使用AgileEAS.NET基础类库进行应用开发-系列目录

AgileEAS.NET平台开发指南-系列目录

AgileEAS.NET应用开发平台介绍-文章索引

AgileEAS.NET平台应用开发教程-案例计划

AgileEAS.NET官方网站

敏捷软件工程实验室

QQ群:116773358

目录
相关文章
|
1天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1069 0
|
10天前
|
人工智能 运维 安全
|
1天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
256 0
|
8天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
9天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
747 23