摘要: HFSoft.Data数据持久组件2.0版本基本功能编写完成,为了验证新版本在改进后的性能于是和传统ADO.Net方式操作数据作了个性能对比。测试方面主要是:添加、修改和查询;此次测试主要是验证组件基础数据操作的性能,因此测试并不十分全面。对于测试的结果可能存在因编写代码问题导致结果有偏差的情况,发现因代码编写问题导致测试结果不正确的朋友请提出。从下面的测试结果可以看到组件的效率还是不错,基本可以达到和传统编写SQL一致的效率。
阅读全文
摘要:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> [Serializable] public class LazyLoadList : IList, System.Collections.IList,ISetLoadInfo { ...
阅读全文
摘要:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> /**//// /// 关联加载适配对象 /// public class RelationLoadAdapter:IRelationLoad { IR...
阅读全文
摘要:前几天构想过持久化组件关联对象加载的方式,经过一段时间的思考决定把构想方案实现出来;用于替换自己原有持久化组件的关联加载方式。为了使加载方式更灵活,于是采用接口方式来描述加载过程。采用接口的好处就是开发人员完全可以根据自己的需来制定加载的方式;如:实时加载、延时加载或两者结合。这次的实现主要是关联加载和关联删除,实现的原则就是尽量以插件的方式直入到原有持久化组件中,这样可以更好地保证原有功能正确性。原有组件在数据查询和删除时对关联处理上下文对象进行检测,根据开发人员的设置进行功能的切入执行。
阅读全文
摘要:在数据持久化组件中关联对象加载是个比较困扰的问题,因为在实际应用中加载的情况还是比较多的;如即时加功、延时加载、加载父对象、加载子对象或加载指定关系类型的对象。用一个全局性的配置基本不可能适应多变的加载方式;即使固定到具体关系上也并不理想,因为根据业务处理不同加载的情况是有所变化的。就是因为加载的复杂性所以自己编写的持久组件中一直没有把关系加载处理表现出来(即使存在这功能,主要是使用上不灵活)。经过一段时间的思考发现一种比较理想的加载方式,加载方式是引入一个关系数据加载上下文对象,开发人员获取数据后对上下文对象进行设置加载方式即可实现自动关联加载;整个加载过程还是透明的只是需要开发员通过上下文对象指定加载的方式。
阅读全文
摘要: 编写基于几个表的关联查询和统计的确是件烦琐的事情,由于基于字符的描述很多信息难以抽取出来共用,当其他地方需要这种情况的时候又必须重写。为了避免这情况SQL Artisan引用了视图对象,通过视图对象描述数据查询的信息;视图对象有一个最大的好处就是继承,可以从一个已经有的对象(实体对象或视图对象)继承下来扩展新的查询功能描述。实际应用中你可以建立一个基础统计视图对象,然后根据情况派生出具体的统计对象(如:根据不同信息分组,显示那些字段信息等).
阅读全文
摘要: 在之前的随笔里已经介绍过以条件驱动的方式来进行数据访问操作。SQL Artisan的目标并不是把SQL语句以对象的方式体现在.Net中,而是尽量以简单方便的操作方式来访问数据库。由于是以条件为主导因此在数据查询操作时是不需要明确操作的表对象(当条件为一个空条件时才需要指定操作表,当存在条件引用时组件内部会进行表引用创建),从而简化操作语句的编写;除了数据查询外SQL Artisan的条件对象还直接支持数据删除、修改和聚合统计等操作。以下主要通过例程来介绍以条件驱动的操作数据所带来的灵活和方便;为了体现以上好处所以和传统SQL操作方式进行不同情况的对比。
阅读全文
摘要: 本文主要介绍SQL Artisan处理规则结构,认大家对组件的结构有个大体的认识。SQL Artisan主要由:数据处理容器,操作行为描述,条件描述和映射处理描述等四大部分构成;各自完成数据库操作中不同部分,最后整合完成整个数据库操作处理。虽然通过组件进行数据库操作很方便,实际在处理过程都会经过这四个环节处理。
接下来简单介绍这四个模块的类结构和类关系信息:
(文章尾部可以下载清晰类结构图)
阅读全文
摘要: IExpression是Sql Artisan组件的条件描述接口,组件中使用的所有条件(包括组合条件)都是以IExpression体现出来。但现有版本中的IExpression只支持数据查询、删除和修改操作,对于聚合统计并没有直接支持,只能通过视图对象的方式来描述聚合统计;但这种方式需要描述实体使用不是很方便,因此产生对IExpression简化聚合统计的想法。接下来为大家介绍以外部扩展的方式对IExpression实现数据聚合统计功能。
阅读全文
摘要: 经过一段时间的修改SQL Artisan1.3功能已经完成,新版本并没引入太多的新功能,主要着手于使用方便性上的改进和完善。在这个版本中你可以看到数据操作变得很方便简洁,包括数据查询和统计;大部分的操作方式都是基于条件的驱动,让使用者在数据查询和统计中只关心条件,从而达到简单快捷地实现相关数据操作功能。由于这个版对基础的修改比较多因此并不稳定,在这里发表组件使用功能的主要目的是想得到大家意见。
接下来介绍SQL Artisan1.3的功能使用,主要包括以下几个方面:数据修改操作,数据查询操作(包括复杂的关联查询),聚合统计。通过介绍组件使用的过程你会体会组件在数据操作上的方便性,其效果相信不会令你失望;当然更希望得到的是你宝贵的意见...
阅读全文
摘要:这种数据库访问方式和传统持久化组件的操作方式有所差别。在传统的数据访问操作中先明确操作对象然后设置相关条件;但在本文中所在地提到的访问方式是以条件为主导,就是根据你需要的情况编写条件直接在这基础上进行操作,并不需要显式借助于某个容器,所有操作所需要支持的环境在条件构成造过程中隐式创建
阅读全文
摘要:在实际开发中要经常面相对比较复杂的数据查询,有时查询条件是依赖于其他表的数据信息;这个时候就必须在当前比较条件下添加相关的子查询。对于用手编写SQL来说并不难只是麻烦一点,在持久化组件中对象结合字符的条件表达式实现查询并不理想,更理想的是对象约束条件编写。
阅读全文
摘要: SQL Artisan有着明确的目标就是代替SQL语句进行数据库操作。虽然目标似乎很遥远,但在新版中已经实现了大部的SQL语句操作,包括在现实项目中面对比较多的多表关联查询和数据统计等。当然SQL Artisan的实现并不是为简单地代替SQL语句,方便灵活地操作数据库才是它的本质。
阅读全文
摘要:SQL Artisan的下一个版本引入ConnectionContext和TransactionContext两个数据处理上下文对象。两个对象的功能主要是让不同区域的数据库访问代码共享数库连接和事务。TransactionContext是ConnectionContext派生类除了共享事务外还共享数据库连接,而ConnectionContext只提共享数据库连接。以上两个上面文对象都支持嵌...
阅读全文
摘要:SQL Artisang下一个版本的功能主完善在表对象操作和对象映射方面;包括:表对象支持数据操作,对象继承,视图对象映射,统计对象映射等.为了让组件功能扩展更方便,把组件的数据映射方式进行重构,由原来的XML描述改成Attribute...
阅读全文
摘要:在实际开发过程中我们经常面对一些查询或统计子表信息,对于一层处理还是比较简单,如果二层、三层等或更多时这个时候编写出来的条件就比较复杂和容易出现编写错误的情况。SQL Artisan字段对象除了提供灵活的比较运算功能外,对象的In方法还提供N层条件嵌套的功能,让你在构造查询条件更灵活。 以MSSQL的NorthWind为例: 查询指定雇员在某段时间的销售金额。 处理的表:Employees,Ord...
阅读全文