前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务

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

作者头像
魏琼东
发布2018-01-12 10:53:50
5100
发布2018-01-12 10:53:50
举报
文章被收录于专栏:魏琼东

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

本文重点

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

[3A0DOVP)2C9[UV9(~OB6$S
[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中增加如下代码:

代码语言:javascript
复制
 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增加如下代码:

代码语言:js
复制
 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         }

          流程主控代码中增加如下代码:

代码语言:javascript
复制
    System.Console.WriteLine("按任意键继续...");
    System.Console.Read();
    System.Console.WriteLine("演示自定义业务(取最大号Insert)的例子:");
    new DataObjectDemo().DemoInsert2();
    new DataObjectDemo().DemoQuery2();

     编译运行,输出结果:

image
image

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2010-10-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文重点
  • 演示的例子
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档