一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务
前面的四篇文章演示ORM的一些常规操作与配置,通过前面的文章,应用开发人员要可以使用ORM开发出简单的应用,但是,ORM也不是万能钥匙,在业务应用中,还有很多是ORM解决不了的问题,对于这些问题,我们必须景借助于SQL语句。
本文重点
既然ORM解决不了所有的问题,我们得借助于SQL语句,也就是我们可以理解为在DAL层,在ORM对象中,还得支持SQL的操作:
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增加如下代码:
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();
编译运行,输出结果:
有关本例子所涉及的数据表结构请参考基于AgileEAS.NET平台基础类库进行应用开发-总体说明及数据定义一文,有关数据对象模型定义文件、文档、DDL脚本请下载:https://files.cnblogs.com/eastjade/demo.db.doc.sql.rar,本文代码下载:ORM.Demo5.rar。
链接
一步一步教你使用AgileEAS.NET基础类库进行应用开发-系列目录
QQ群:116773358
作者:魏琼东
出处:http://www.cnblogs.com/eastjade
关于作者:有13年的软件从业经历,专注于中小软件企业软件开发过程研究,通过在技术与管理帮助中小软件企业实现技术层面开源节流的目的。熟悉需求分析、企业架构、项目管理。现主要从事基于AgileEAS.NET平台的技术咨询工作,主要服务于医疗卫生、铁路、电信、物流、物联网、制造、零售等行业。如有问题或建议,请多多赐教!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过mail.james@qq.com 联系我,也可以加入QQ群:113723486、199463175、116773358、116773358、212867943、147168308、59827496、193486983、15118502和大家共同讨论,非常感谢。