RookeyFrame模块初始化
上一篇讲了下线上创建模块,这一次讲下线下创建的模块如何初始化,实体类的创建可参考Demo中的客户主数据模块
首先讲下model类创建中的约定:
1.所有数据模型继承BaseEntity
2.需要绑定枚举的字段定义,数据库字段定义必须是int型,枚举字段为数据库字段+OfEnum,并且枚举字段上必须加上[Ignore]属性,这样CustomerStatus 字段 设置下拉框时会自动绑定枚举,枚举的定义参考Demo中的CustomerStatusEnum
如下所示:
public int CustomerStatus { get; set; }
[Ignore]
public CustomerStatusEnum CustomerStatusOfEnum
{
get
{
return (CustomerStatusEnum)Enum.Parse(typeof(CustomerStatusEnum), CustomerStatus.ToString());
}
set { CustomerStatus = (int)value; }
}
3.外键字段定义,类型:Guid?,字段名:外键模块类名+Id,如果是多选外键则以Other开头,多选外键字段定义见Rookey.Frame.Model下Sys_Role的OtherParentRoles字段
4.外键字段的显示字段名称为外键模块类名+Name,如果是多选外键则是外键字段+Name
5.所有树状实体类的父字段定义为ParentId,外键Name字段为ParentName,外键模块指向自己
6.需要绑定数据字典的字段定义为string型
基于以上约定创建完model后,并设置model类的ModuleConfig和各字段的FieldConfig,这样以后就可以初始化该model了,
初始化有三种情形:
1.全部重建,操作方式:删除数据库,配置web.config中的NeedInit为true,执行Ctrl+F5(执行不调试),如果之前已经登录,退出到登录页面,只有在登录页面才会执行初始化的动作,如果创建数据库失败(有些版本可能有问题),可以自己先把数据库建好,再执行初始化的动作,就会初始化各数据表和模块相关数据
2.初始化单个或多个model,操作方式:配置web.config中的NeedInit为false,配置NeedRepairTable为true,配置RepairTables为要初始化的model类名,多个以逗号分隔,执行Ctrl+F5(执行不调试),如果之前已经登录,退出到登录页面

3.针对已经初始化过了的model增加了字段,操作方式:在Demo解决方案的Rookey.BusSys.Operate工程中的InitOperate类的App_Start方法中做初始化字段操作

初始化成功后将该初始化字段的代码注释,以免每次启动都执行该代码
ok,今天model初始化的操作就讲完了,有什么问题可以群里问我
最后附上demo地址:
https://gitee.com/rookey/Rookey.FrameDemo
RookeyFrame模块初始化的更多相关文章
- nginx源码分析之模块初始化
在nginx启动过程中,模块的初始化是整个启动过程中的重要部分,而且了解了模块初始化的过程对应后面具体分析各个模块会有事半功倍的效果.在我看来,分析源码来了解模块的初始化是最直接不过的了,所以下面主要 ...
- JobTracker等相关功能模块初始化
[Hadoop代码笔记]Hadoop作业提交之JobTracker等相关功能模块初始化 一.概要描述 本文重点描述在JobTracker一端接收作业.调度作业等几个模块的初始化工作.想过模块的介绍会在 ...
- nginx-push-stream模块源码学习(二)——模块初始化
本文重点介绍push stream模块的构成,至于nginx如何启动.维护该模块不会详细阐述,以后有时间会做详细阐述. 一.模块定义 1.1. 模块配置 通用nginx模块的配置struct有三种, ...
- nodejs -- 主模块 ,初始化.
一:知识点: 1-1: 模块初始化: 1-2 主模块: 二: 测试 2-1: 代码: 1) 主模块 1: main.js var counter1 = require("./counte ...
- Framebuffer 驱动学习总结(二)---- Framebuffer模块初始化
---恢复内容开始--- Framebuffer模块初始化过程:--driver\video\fbmem.c 1. 初始化Framebuffer: FrameBuffer驱动是以模块的形式注册到系统 ...
- Nodejs模块初始化
模块初始化 一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象.之后,缓存起来的导出对象被重复利用. 主模块 通过命令行参数传递给NodeJS以启动程序的模块被称为 ...
- Windows加载器与模块初始化
本文是Matt Pietrek在1999年9月的MSJ杂志上发表的关于Windows加载器与模块初始化方面的文章.作者深入分析了LdrpRunInitialize璕outines例程的作用,用C语言写 ...
- C# 9.0新特性详解系列之三:模块初始化器
1 背景动机 关于模块或者程序集初始化工作一直是C#的一个痛点,微软内部外部都有大量的报告反应很多客户一直被这个问题困扰,这还不算没有统计上的客户.那么解决这个问题,还有基于什么样的考虑呢? 在库加载 ...
- dsPIC33EP ADC模块初始化及应用实例
//文件名 p33adc.h #ifndef _P33ADC_H_ #define _P33ADC_H_ //#include "p33adc.h" //--AD1CON1 #de ...
随机推荐
- 在RPA中使用Python批量生成指定尺寸的缩略图!比Ps好用!
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 htt ...
- CSS3 动画--- CSS3 animation
动画是CSS3中具有颠覆性的特征之一,可通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果. 语法格式: animation:动画名称 花费时间 运动曲线 何时开始 播放次数 是否反方 ...
- JS实现深浅拷贝
1.实现浅拷贝 // 1. ...实现 let copy1 = {...{x:1}} // 2. Object.assign实现 let copy2 = Object.assign({}, {x:1} ...
- C# vs2017创建Com组件,并注册
1.创建一个普通类库dll项目,如:MyCom. 2.导出接口,添加Guid,Guid为全局唯一标识,可以用VS2017自带工具获取.获取Guid的方法,如图: (1)打开自带Guid工具. (2)首 ...
- 【LeetCode】1056-易混淆数
易混淆数 给定一个数字 N,当它满足以下条件的时候返回 true:把原数字旋转180°以后得到新的数字.如 0, 1, 6, 8, 9 旋转 180° 以后,得到了新的数字 0, 1, 9, 8, 6 ...
- C和C++中的struct的不同
C和C++中的struct的不同: (1)定义变量: C语言中: struct stu { ...... }; struct stu student; C++语言中: struct stu { . ...
- MySQL 部署分布式架构 MyCAT (五)
分片(水平拆分) 4.全局表 业务使用场景: 如果你的业务中有些数据类似于数据字典,比如配置文件的配置, 常用业务的配置或者数据量不大很少变动的表,这些表往往不是特别大, 而且大部分的业务场景都会用到 ...
- Linux 的 netstat 命令
转载 https://www.cnblogs.com/ct20150811/p/9432043.html 一般用 netstat -lnp |grep "程序名"
- 安装npm install app-inspector -g 提示错误
问题1: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^ (node_modules\app-inspector\node_mod ...
- Tomcat 学习总结(1) --Servlet技术
在Web应用中,Servlet是一门重要的技术,Servlet是利用Java类编写的服务端程序,与平台架构,协议无关. JSP的实质就是Servlet,因为所有的JSP页面传回服务端时要转为Servl ...