昨天介绍了数据库的配置,今天继续介绍系统的初始化功能;针对系统初始化在开发中也是很重要的一部分,它可以提前将相关数据提前自动初始化到系统中,同时也可以为上线测试提供方便,可以很方便进行系统测试演练,防止人为处理带来的隐患并且可以节省大量部署时间。

本框架中系统初始化包含数据库(包括默认库和自定义库)初始化、数据表初始化、系统数据初始化以及自定义数据初始化,在Rookey.Frame.Controllers\UserController.cs用户控制器中,在登录页面Login(Action)中,系统会自行判断当前系统是否需要初始化,判断条件是判断用户表中是否存在用户数据,同时会判断数据库是否存在,如果数据库不存在则先初始化数据库,判断初始化代码如下:

        /// <summary>
/// 是否需要初始化
/// </summary>
/// <returns></returns>
public static bool IsNeedInit()
{
try
{
DbLinkArgs dbLinkArgs = ModelConfigHelper.GetLocalDbLinkArgs();
if (dbLinkArgs == null) return true;
if (!SystemOperate.DbIsExists(dbLinkArgs))
{
//向各数据库注册存储过程
SystemOperate.RegStoredProcedure();
//在当前数据库中自动注册外部链接数据库服务器
SystemOperate.RegCrossDbServer();
}
string errMsg = string.Empty;
long count = CommonOperate.Count<Sys_User>(out errMsg, false);
return count == ;
}
catch
{
return true;
}
}

在判断需要初始化后,系统会依次进行数据表初始化、字段修复(目前只支持字段增加)、模块数据初始化、列表信息及列表字段初始化、列表按钮初始化、表单信息及表单字段初始化、图标初始化、添加管理员角色和用户、初始化系统菜单、调用自定义初始化

Rookey.Frame框架是基于业务无的框架,可以很容易将其应用到新项目中,只需要将相关组件添加到引用即可,详见Rookey.Demo,很多时候在一个稍大点的公司系统也很多,但是系统复用性非常低,重复造轮子的代码到处都是,一个系统中已经实现了但由于耦合性太强,另外一个系统不得不自己再写一套相关的逻辑处理,能共用的组件很少,有的一般也是采用服务或接口方式提供,本人从事信息化以来所在的公司很少有公司有一套公共的系统框架可复用,所以写此框架的目的也是基于此,Rookey.Frame做为一套基础框架,可以在其上衍生出自己的业务框架,这样业务框架也可以达到复用的目的,公司各个系统在此基础上可以进行快速开发,节省人力开发成本、时间成本,当然本框架也存在很多问题,我也会尽全力将其完善。说了这么多其他是想说自定义初始化的部分,当系统框架稳定后应该是一套独立的组件,开发新项目时直接引用即可,这时候框架初始化的时候同时初始化当前项目数据;在Rookey.Frame.Operate.Base\InitFactory.cs基类中提供了一个自定义初始化的抽象方法

        /// <summary>
/// 自定义初始化,包括菜单、模块、字段、字典等数据初始化
/// </summary>
public abstract void CustomerInit();

在各自的项目中只要继承框架中InitFactory类重写此方法即可初始化即可。

以下为Rookey.Demo中自定义初始化代码:

    /// <summary>
/// 自定义初始化
/// </summary>
public class InitOperate : InitFactory
{
/// <summary>
/// 自定义初始化
/// </summary>
public override void CustomerInit()
{
string errMsg = string.Empty;
CommonOperate.DeleteRecordsByExpression<Sys_Menu>(x => x.Name == "行政管理" || x.Name == "礼品申请", out errMsg);
Sys_Menu XZMenu = new Sys_Menu() { Name = "行政管理", Display = "行政管理", IsLeaf = false, IsValid = true };
Guid xZMenuId = CommonOperate.OperateRecord<Sys_Menu>(XZMenu, Frame.Operate.Base.OperateHandle.ModelRecordOperateType.Add, out errMsg);
Guid detpModuleId = SystemOperate.GetModuleIdByName("礼品申请");
if (xZMenuId!=Guid.Empty)
{
List<Sys_Menu> list = new List<Sys_Menu>();
list.Add(new Sys_Menu() { Name = "礼品申请", Display = "礼品申请", ParentId = xZMenuId, Sys_ModuleId = detpModuleId, IsLeaf = true, IsValid = true });
CommonOperate.OperateRecords<Sys_Menu>(list, Frame.Operate.Base.OperateHandle.ModelRecordOperateType.Add, out errMsg);
}
}
}

OK,今天初始化的部分就介绍到此地,下次给大家介绍下系统通用类,祝大家生活愉快!

Rookey.Frame之系统初始化的更多相关文章

  1. Rookey.Frame之实体类

    上周跟大家分享了Rookey.Frame框架的初始化功能,今天继续给大家介绍实体类的设计. 先看下下面菜单实体示例代码: using Rookey.Frame.EntityBase; using Ro ...

  2. Rookey.Frame v1.0快速开发平台-整体介绍

    Rookey.Frame v1.0是一套基于.NET MVC的极速开发框架,支持简单逻辑模块零代码编程.支持二次开发,具有高扩展性.高复用性.高伸缩性. 框架特点 (1)简单逻辑模块实现零代码编程,通 ...

  3. Rookey.Frame之数据库及缓存配置

    上一篇中讨论了Rookey.Frame框架菜单配置功能,这一节我们继续学习Rookey.Frame框架的数据库连接配置. 之前介绍了Rookey.Frame框架支持跨多数据库,并且支持读写分离,不过目 ...

  4. Rookey.Frame v1.0快速开发平台-用户登录

    上一次介绍的了Rookey.Frame v1.0快速开发平台的整体功能,接下来会对各个功能点进行解析说明,今天给大家介绍下系统登录功能. 用户登录 系统中基本上所有功能页面都是从后台代码拼接后返回的, ...

  5. Rookey.Frame企业级极速开发框架

    项目详细介绍 Rookey.Frame是一套基于.NET MVC + easyui的企业级极速开发框架,支持简单逻辑模块零代码编程.支持工作流(BPM).支持二次开发,具有高扩展性.高复用性.高伸缩性 ...

  6. Rookey.Frame企业级快速开发框架开源了

    Rookey.Frame是一套基于.NET MVC + easyui的企业级极速开发框架,支持简单逻辑模块零代码编程.支持工作流(BPM).支持二次开发,具有高扩展性.高复用性.高伸缩性:应广大网友要 ...

  7. Rookey.Frame之菜单设置

    在上一篇博文 Rookey.Frame企业级快速开发框架开源了 中我们介绍了Rookey.Frame极速开发框架的最新更新及开源介绍,后面慢慢介绍该框架的使用方法,本人文笔不好,写得不够好的地方请大家 ...

  8. centos7 系统初始化脚本

    现在自己的本地虚拟机系统,直接安装的是centos7.2 mini版,安装完成发现好多东西都没有安装,所以写了一个简单的系统初始化脚本,让自己可以省一些力气,哈哈 人懒主要是. 下面贴出写的脚本,脚本 ...

  9. ssh下:系统初始化实现ServletContextListener接口时,获取spring中数据层对象无效的问题

    想要实现的功能:SSH环境下,数据层都交由Spring管理:在服务启动时,将数据库中的一些数据加载到ServletContext中缓存起来. 系统初始化类需要实现两个接口: ServletContex ...

随机推荐

  1. Ubuntu下配置支持Windows访问的Samba共享

    一.安装Ubuntu samba服务器 $ sudo apt-get install samba $ sudo apt-get install smbclient # Linux客户端测试用 二.创建 ...

  2. linux缓存手动清理

    一般情况下不建议这么做, 如果你确定向的话还是可以的首先运行sync把未存盘的cache都写入磁盘,稍等片刻, 或者是直接运行sync 两遍 然后echo  1  试试应该大部分缓存可以释放 释放ca ...

  3. Bittersweet——NOIP2018 游记

    p { font-size: 16px; line-height: 1.5em; } blockquote { font-family: 'Times New Roman', 楷体; text-ali ...

  4. openwrt的sysupgrade和factory固件的区别

    openwrt的固件一般分两种类型:factory原厂固件.sysupgrade固件 factory多了一些验证的东西,用于在原厂固件的基础上进行升级. 普通家用路由一般不是openwrt固件,如果要 ...

  5. Linux Ubuntu下安装配置mysql

    检查系统中是否已经安装了mysql: sudo netstat -tap | grep mysql 安装mysql: sudo apt-get install mysql-server sudo ap ...

  6. xgraph和gnuplot初体验

    今天分别体验了一下xgraph和gnuplot.   xgraph是ns2自带的画图工具,使用很简单.它的标准的数据文件是ascii文本文件,每一行两个数据,以空格隔开,这样就有了两列数据.把这样的文 ...

  7. 让vcmi支持英雄无敌3中文版

    Table of Contents 1 Hack 日志 2 Changes 3 Install by compiling 4 reply of Ivan 1 Hack 日志 8月22日开始动手修改改v ...

  8. mysql手工注入步骤

    1.一般用 '  "  ) 等符号来闭合,再用%23(即#)来注释后面语句. 2.查找数据库,先用order by n猜字段,再用union select 1,2,3 ...n%23来查询. ...

  9. hdu 1253 胜利大逃亡 (广搜)

    题目链接 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个ABC的立方体,可以被表示成A个 ...

  10. NYOJ 123 士兵杀敌(四) (线段树)

    题目链接 描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个 ...