需求

先说一下需求:实现用户自定义的查询,用户可以自定义要查询的列、自定义条件条件、自定义排序。除了查询使用外,还可以使用于各个需要根据条件进行约束的业务,如权限;

本设计和实现,很大部分是通过数据库和存储过程进行,界面只是让用户选择数据列和设置条件,并把这些内容保存在数据库中,查询是通过存储过程拼SQL语句完成,并把结果集返回。

设计结构

基础登记表-->查询设置表-->存储过程运行

 

.Net IQueryable 自定义查询 自定义查询设计_字段

 

表设计

首先定义基础登记表,基础登记表分为三个部分:表登记、列登记、表间关系登记;

表登记的数据表包含如下字段:

字段描述

字段名

类型

说明

登记表自增长关键字

id_table

int

自增长

基础表

tablereg_name

varchar(60)

数据库中名称

基础表中文名

tablereg_cnname

varchar(60)

业务上显示的名称

关键字段名

prk_name

varchar(60)

关键字字段

关键字段中文名

prk_cnname

varchar(60)

关键字中文名称

审核后是否可以删除

checkdel_flag

char(1)

用户控制业务操作

使用后是否可以删除

useddel_flag

char(1)

用户控制业务操作

控制操作权限

belong_type

char(1)

用户控制业务操作

用户可配置

config_flag

char(1)

用户控制业务操作

业务主表标志

mainbusiness_flag

char(1)

用户控制业务操作

是否需要审核

check_flag

char(1)

用户控制业务操作

需要定义审批流程

checkflow_type

char(1)

用户控制业务操作

审批流程ID

id_workflow

int

用户控制业务操作

数据库名称

schema_name

varchar(100)

用户控制业务操作

消息通知标志

message_flag

char(1)

用户控制业务操作

是否权限控制

permission_flag

char(1)

用户控制业务操作

列登记的数据表包含如下字段:

字段描述

字段名

类型

说明

自增长关键字

id_column

int

自增长关键字

登记表关键字

id_table

int

归属表的ID

顺序号

serial_num

int

标示列的顺序

字段表

column_name

varchar(60)


字段中文名

column_cnname

varchar(60)


数据类型

data_type

char(1)

1 数字;2 字符;3 时间;

原始数据类型

data_type_original

varchar(20)

记录数据库中的数据类型 如 int datetime 等

原始列数据类型

column_type_original

varchar(30)


是否权限控制

permission_flag

char(1)

业务使用

下拉列表ID

id_list

int

标识下拉框的数据源,可以是枚举或是数据源

 

表间关系登记表

字段描述

字段名

类型

说明

登记表关系ID关键字

id_tabrela

int

自增长

主表

id_table

int

表的ID

关联表

id_table_rela

int

表的ID

主表字段名

column_name

varchar(100)

主表的关键字

主表字段中文名

column_cnname

varchar(100)

主表的关键字中文名

关联表字段

column_name_rela

varchar(100)

关联表的关键字,一般是外键

关联表别名

relatable_name

varchar(100)

关联名别名,显示用

关联表查询别名

tableas_name

varchar(100)

拼SQL语句时表别名

这三个表的数据,根据数据库中系统表的内容进行初始化填写。并且开发了一个界面,进行一些业务上的设置,主要是设置表中“用户控制业务操作”的那些字段;