zoukankan      html  css  js  c++  java
  • 一步一步教你使用AgileEAS.NET基础类库进行应用开发基础篇通过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脚本请下载:https://files.cnblogs.com/eastjade/demo.db.doc.sql.rar,本文代码下载:ORM.Demo5.rar

    链接

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

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

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

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

    AgileEAS.NET官方网站

    敏捷软件工程实验室

    QQ群:116773358

  • 相关阅读:
    启动窗体的程序控制与动画效果
    在线程中使用定时器
    从oracle9i/92数据库中导出数据至 oracle 8.1.7 数据库中
    收集:PowerDesigner常见问题解决与设置集锦
    [转]C# 2.0新特性与C# 3.5新特性
    COM服务器的创建过程
    [原创] 为什么需要TLS(Thread Local Storage)?
    COM+服务器的.Net组件实现 客户端
    如何在客户端避免繁冗的服务器GUID定义及导入?
    进程、线程、套间和环境
  • 原文地址:https://www.cnblogs.com/eastjade/p/1842927.html
Copyright © 2011-2022 走看看