XAF新手入门 - 数据字典示例
前言
通过前面文章的介绍,大家应该对模块与类型信息子系统有所了解,再通过一个示例来加深大家对它的理解。
在准备写这个系列文章之前,就准备是概念+示例的组合,这样大家对概念的理解会更深刻。之前的规划是在讲到一个比较重要的概念或多个概念时给出一个示例,示例也是针对大家都熟悉的场景(如:学生),虽然也能描述出概念中的知识点,但事后考虑到实用性不强,不能直接应用到实际项目中,所以改变了一下思路,以后的示例会更注重实用,示例中的项目可以间接或直接的应用到实际项目中。
示例概述
数据字典几乎每个项目中都会涉及到,有的会将每一个字典分别采用不同的实体表,由于字典的结构差不多,所以有的会共用一个实体表。我们当前的示例就是共用一个实体表的数据字典,先说一下它的使用方法,代码如下:
示例代码放到了码云(https://gitee.com/easyxaf/data-dictionaries),以后示例的项目都是以EasyXaf开头。

在BO(BusinessObject)中添加上面的代码,BO中的性别与岗位就是一个字典数据了,性别是单选的,岗位是多选的,效果如下图:

下面是管理数据字典的界面,字典列表:

字典项管理:

整个示例的核心代码很少,大部分工作都是XAF帮我们完成了。
实现思路
先看一下整个项目的结构:

EasyXaf.DataDictionaries是整个项目的核心,它是一个独立的XAF模块项目,可直接应用到其它的XAF项目中,其它两个是由XAF向导生成,用于演示本示例的。
EasyXaf.DataDictionaries项目结构:

XPO的一个知识点,在XPO中是不能直接关联(Association)一个外部程序集中的BO(BusinessObject),XAF中自身的BO都是放在同一个程序集中的(DevExpress.Persistent.BaseImpl.Xpo),所以不存在这样的限制。如果我们的BO都放到同一个程序集中,这样项目的模块化会有一定限制。XPO给出了两个解决方案,一种是在AssociationAttribute中传入程序集的名称及类型的全名(都是字符串),还有自定义XPO的元数据(在XAF中是在Module的CustomizeTypesInfo方法中进行定义的),我们的示例项目采用了后者,它更加的灵活。
我们整个示例项目的核心代码都是在CustomizeTypesInfo中,通过TypesInfo对符合条件的BO进行自定义,在运行时添加成员及Attribute。代码如下

代码中已包含了详细的注释,大家可以根据注释去了解它的工作原理。
为了能够在启动时自动收集所用到的数据字典,我们在Updater中收集了项目的所有数据字典,并将其添加到数据库中,代码如下:

关于如何引用EasyXaf.DataDictionaries,在模块章节中已进行了详细的描述,大家也可以参考示例代码
总结
数据字典示例主要是基于XAF中的业务类元数据来完成的,并且示例项目还是一个独立的XAF模块,所以它把模块与类型信息子系统的知识都涉及到了。如果你想开发独立的XAF模块,并且想广泛应用到其它项目中,业务类元数据是不可缺少的。
XAF数据字典项目地址:https://gitee.com/easyxaf/data-dictionaries
XAF新手入门 - 数据字典示例的更多相关文章
- XAF新手入门 - 前言
很多小伙伴在第一次接触XAF时,会被它的丰富功能及开箱即用的特点所吸引,即使在不了解XAF的情况下,也能够依葫芦画瓢创建一个功能丰富的应用,但当应用到实际项目中时,你会发现与之前的愿景差距很大,很多都 ...
- XAF新手入门 - 类型子系统(Types Info Subsystem)
类型子系统概述 类型子系统是XAF的核心概念,但我们平时却很少关注它,它集中存储了模块中的类型,它是生成应用程序模型(Application Model)的基础,它与XAF中其它的概念都有所关联,了解 ...
- XAF新手入门 - 模块(Module)
模块概述 谈到模块大家应该都不会感到陌生,不管是前端还是后端都有模块的概念,XAF中的模块概念与大多数框架中的模块概念是相通的.XAF模块首先是一个.NET类库,同时它还包含一个继承自ModuleBa ...
- 新手入门指导:Vue 2.0 的建议学习顺序
起步 1. 扎实的 JavaScript / HTML / CSS 基本功.这是前置条件. 2. 通读官方教程 (guide) 的基础篇.不要用任何构建工具,就只用最简单的 <script> ...
- 原创:从零开始,微信小程序新手入门宝典《一》
为了方便大家了解并入门微信小程序,我将一些可能会需要的知识,列在这里,让大家方便的从零开始学习:一:微信小程序的特点张小龙:张小龙全面阐述小程序,推荐通读此文: 小程序是一种不需要下载.安装即可使用的 ...
- 课程上线 -“新手入门 : Windows Phone 8.1 开发”
经过近1个月的准备和录制,“新手入门 : Windows Phone 8.1 开发”系列课程已经在Microsoft 虚拟学院上线,链接地址为:http://www.microsoftvirtuala ...
- discuz插件开发新手入门 超详细
作为一个新手,目前也是刚刚玩转discuz的插件功能,好东西不敢独享,就拿出来大家一起分享入门的过程.现在网上很多关于discuz的插件教程都是很简单的教程,原因可能是这个东西是商业化的东西,本着分享 ...
- XML新手入门 创建构造良好的XML(1)
XML新手入门 创建构造良好的XML(1) 2009-03-19 09:24 Kay Whatley IBM Developerworks 我要评论(0) 字号:T | T 本文描述了构建良好的XML ...
- discuz 插件开发 新手入门
作为一个新手,目前也是刚刚玩转discuz的插件功能,好东西不敢独享,就拿出来大家一起分享入门的过程.现在网上很多关于discuz的插件教程都是很简单的教程,原因可能是这个东西是商业化的东西,本着分享 ...
- Xorboot-UEFI新手入门教程
Xorboot-UEFI新手入门教程 Xorboot-UEFI是一款UEFI下轻量级的图形化多系统引导程序,pauly于2014年国庆节期间发布了预览版.搜了下论坛,关于Xorboot- ...
随机推荐
- 基于 hugging face 预训练模型的实体识别智能标注方案:生成doccano要求json格式
强烈推荐:数据标注平台doccano----简介.安装.使用.踩坑记录_汀.的博客-CSDN博客_doccano huggingface官网 参考:数据标注平台doccano----简介.安装.使用. ...
- 2.8 CE修改器:寻找共享代码
本关我们将学习共享代码,在C语言中角色属性都是以结构体的方式进行存储的,而结构体所存储的信息都是连续性的,这一关我们将会解释如何处理游戏中的共用代码,这种代码是通用在除了自己以外的其他同类型对像上的常 ...
- CF455D Serega and Fun 题解
题目链接:CF 或者洛谷 本题是可以用平衡树去做的,具体的为每个 \(k\) 开一棵平衡树去维护相对位置,而这种移动操作用平衡树维护又是很容易做到的,这种做法是双 \(log\).在 \(1e5\) ...
- webrtc终极版(一)5分钟搭建多人实时会议系统webrtc
webrtc终极版(一),支持https,在线部署[不是本地demo],采用RTCMultiConnection官方demo,5分钟即可搭建成功 @ 目录 webrtc终极版(一),支持https,在 ...
- 《ASP.NET Core 与 RESTful API 开发实战》-- (第8章)-- 读书笔记(上)
第 8 章 认证和安全 8.1 认证 认证(Authentication)是指验证用户身份的过程,授权(Authorization)是验证一个已经通过认证的用户是否有权限做某些事的过程 常见的 HTT ...
- ASP.NET Core分布式项目实战(oauth2与open id connect 对比)--学习笔记
任务14:oauth2与open id connect 对比 以微博开放平台为例(微博登录接入--授权机制): https://open.weibo.com/wiki/授权机制 可以看到微博登录接入使 ...
- VMware全版本下载工具
有很多小伙伴想下载适合自己的虚拟机版本,但是官网全是英文看不懂 百度找的还怕带病毒 这里栀煜单独制作了个工具,内置vm9 10 11 12 14 15 16 17版本的虚拟机下载地址,都是官方版 不是 ...
- 云原生服务网格Istio:原理、实践、架构与源码解析
华为云原生团队600多页的Istio实战精华总结,云原生服务网格Istio:原理.实践.架构与源码解析的电子书. 图书介绍 <云原生服务网格Istio:原理.实践.架构与源码解析>分为原理 ...
- 惠普HP519打印机缺色处理记录
打印蓝色缺失, 黑色出墨不均匀 开盖检查, 发现蓝色墨水管路中间有断线, 拆开打印头后, 用随机器配的桔红色吸墨器吸墨. 之后重新开机还是缺色. 检查彩色打印头, 用浅浅的一层热水泡下方喷嘴, 黄色红 ...
- eslint+prettier 统一代码风格
1.实现效果 Eslint校验代码语法,prettier统一格式化代码,按下保存自动修复eslint错误,自动格式化代码. 2.安装vscode插件 Vetur ESLint Prettier - C ...