Rafy 领域实体框架演示(2) - 新功能展示
本文的演示需要先完成上一篇文章中的演示:《Rafy 领域实体框架示例(1) - 转换传统三层应用程序》。在完成改造传统的三层系统之后,本文将讲解使用 Rafy 实体框架后带来的一些常用功能。
数据库自动生成
在程序转换转换完毕后。由于已经配置好数据库的连接字符串,所以直接运行整个程序,Rafy 会同时生成对应的数据库、表、字段,以及相应的外键关系等。
该库满足数据库的第三范式要求。同时,开发过程中新添加的属性,也会每次自动同步到这个数据库中。
以下是服装管理系统生成的数据库结构图:
监控执行的 SQL 语句
框架可以记录所有运行过程中执行的 Sql 语句及相关日志。这对于开发人员做系统调试、性能优化提供了较好的帮助。
该功能需要手动打开。在配置文件中添加以下配置:
<configuration>
<appSettings>
<!--如果是监听应用程序所有的 SQL 语句,请打开以下配置-->
<add key="SQL_TRACE_FILE" value="D:SQLTraceLog.txt"/>
</appSettings>
</configuration>
配置项的值是用于记录日志的文件的地址。这时,我们再运行整个程序,就会发现 D 盘下的 SQLTraceLog.txt 文件已经开始记录整个程序所有执行的 SQL 了。
记录的格式如下:
2013/10/30 10:23:42 Database: ClothesSys SELECT [User].[Id],[User].[Name],[User].[Password],[User].[UserName] FROM [User] WHERE [User].[UserName] = @p0 ORDER BY [User].[Id] ASC Parameters:"rafy"
领域实体关系图
在安装了 RafySDK 后,可以使用领域实体关系图,以图形的形式来描述指定的部分实体及实体间的关系。
例如,我们在 CS 项目中 Entities 文件夹内,添加新项,选择 Rafy -> Domain Model Designer,命名为 CS Model.odml:
在打开的文档中点击“添加实体类”按钮,在弹出的窗口中选择除基类外所有的领域实体类:
点击确定后,图中便自动为所选实体生成了对应的关系图,稍加调整即可:
在图中可以清晰地看出:Bill 与 Sell 是组合关系,而其它的实体间的引用关系的名称、可空性等。这些关系,与我们在转换之初的 UML 设计是完全一致的。
更详细的功能说明,请试用并参见发布的说明文档。下一篇将会说明如何把应用程序,从当前直接连接数据库的单机版结构,快速部署为 Client-Server-Database 的分布式结构。
框架发布地址:《Rafy 发布地址》。
- Spring的三种Circuit Breaker
- Spring5以来注册Bean的各种姿势,特别最后的纯编码注册值得尝试
- ONOS一键安装脚本
- Spring 5 新增全新的reactive web框架:webflux
- 认证鉴权与API权限控制在微服务架构中的设计与实现(一)
- 在服务器上利用docker快速部署博客—jpress
- NSQ深入与实践
- 排序算法性能比较
- 上一期前端面试题整理答案
- 自己动手用Socket写一个HttpClient发送GET请求
- Ryu:模块间通信机制分析
- 异地双活实践笔记
- OpenStack Neutron中的DVR简介与OVS流表分析
- Python爬虫,带你制作高逼格的数据聚合云图
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CSS垂直居中
- 记-虚拟机搭建
- CSI Tools 工具的安装 Intel 5300 + Ubuntu14.04
- 基于ECS搭建云上博客
- Mybatis-Plus代码生成器
- RabbitMQ入门教程
- 使用 Django + Vue.js 开发个人博客网站(完整版附源码)—— Python-课程设计-期末项目
- LVM添加硬盘并扩容至已有分区
- 新增项目时如何修改Jenkins
- 使用封锁协议解决事务的并发问题
- 命令小技巧总结
- Java 中 HashMap 数据结构分析(语言无关)
- Java8中日期的特性,别再用Date来处理日期啦~
- 数据库系统概论考试心得+复习指南
- Docker的基础知识和简单应用