基于数据字典的通用查询系统(四)实体类的设计 1
我们分为两个部分对这个模块中的信息进行Class的抽象,一是从数据库结构进行抽像,一中是从查询的构造过程进行抽象。
在列出包含的类之前,有一点需要说明,就是,正如前面分析,我们要对每一个元素都有一个对数据库的表示,和对用户的表示,在这里,我把对数据库的表示统一为属性Exp,对用户的表示统一为Show
一.从数据库结构进行抽像。
1. 表示数据库中的表的类QueryTable
2. 表示数据库中的列的类QueryCol
3. 表示数据库中的连接的类JoinCondition
4. 表示数据类型的枚举ColShowType,就是我们在第二篇中分析的那四种数据类型(数值,日期,字符串,状态位)
5. 表示数据库中状态位的ColStateValue;
6. 为了操作方便,抽像出集合JoinCoditions,ColStateValues;
类图如下:
呵呵,介于园子里大侠比较多的原因,类的代码就不都贴在这里了,这里只把QueryCol的实现简单说一下。
我们前面说了,我们一共有四种数据类型,按照正常,也是最合乎情况的方式,应当对这四种类型抽像出一个统一的结口,然后实现四种对应的类。进行与QueryCol进行结合,但是在这里,为了处理方便,QueryCol采用了冗余设计的方式,即有些类似于C 、C++中的联合,在一些场合下,只用其特定的属性。
一个是用于处理在日期类型下使用的属性Format,因为如前文所说,日期可能是以datetime存储,也可以是以varchar存储,在这种情况下,当用户进行操作后,就有必要有一种方式将进转换成符合数据库中表的列的设计方式的。这时,我们的Format就起了作用。
另外就是处理在状态位时使用的属性ColStateValues属性,它是一个ColStateValue的集合,这样说可能不大好明白,举个列子,比如一个列,state, 当其为0时表示未处理,当其为1时表示已经处理。
那么这个列就有一个ColSateValues的属性,其中第一个元素的Show为”未处理”,Exp为”0”,第二个元素的 Show为”已经处理”,Exp为”1”;
在这里,为 了使以后的查询结果表示直观,我们还要为ColStateValues设计一个GetState的方法,也就是通过一个元素的exp查找这个元素的show的过程。
至于这些附加的信息存在哪,呵呵, 我们在数据库设计时不是有ColStateString吗?在不同的情况下做一下处理就行了。
为了更明白,最有效的方法,贴一下QueryCol的构造函数吧,嘿嘿

啊,ColStateValues也不能忘了,呵呵,代码如下:

这里已经考虑了用字符串等其他非数值信息做状态位的情况。。
各位看官别说看的头大啊,小的文笔有限,只能先写成这个样子了,呵呵。
明天该写最关键部分,查询部分类库的设计了,呵
系列文章连接
三。数据库设计。
四。实体类设计
五。算法实现
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库