信管通低代码快速开发平台简介(六)

八、信管通低代码开发工具数据库设计

      EF的全称为Entity FramworkADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。微软提供的这种ORM工具,支持面向数据的软件应用程序的技术。ORM让开发人员节省数据库访问的代码时间,将更多的时间放到业务逻辑层代码上。EF提供变更跟踪、唯一性约束、惰性加载、查询事物等。开发人员使用Linq语言,对数据库操作如同操作Object对象一样省事。EF的有三种模式。

1、DataBase First(数据库优先模式)

       传统的表驱动方式创建EDM(实体数据模型),然后通过EDM,基于已经存在的数据库,生成模型和数据层代码,后续也可手动进行修改自动生成的代码和相关文件。除生成实体模型和自跟踪实现模型,还支持生成轻型DbContext。简历理解就是先设计数据库,创建好数据库映射成对象和上下文。

2、Model First(模型优先)

       先利用某些工具(如VS提供的EF设计器)创建EDM模型,再生成DDL数据库脚本和模型和数据层代码。除生成实体模型和自跟踪实现模型,支持生成轻型DbContext。简单理解就是设计EDM模型然后生成到数据库和创建对象和上下文。

3、Code First(代码优先)

       手动创建POCO(指没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的C#对象)模型,数据层DbContext及映射关系,通过Database.SetInitializer生成数据库,这种方式较灵活,但是需要手动定义实体模型和关系映射。简单理解就是自己写好实体对象和映射关系,最后通过命令生成到数据库中去。

        在实际业务系统项目中,数据模型随着功能的实现而变化:添加和删除新的实体或属性,并且需要相应地更改数据库架构,使其与应用程序保持同步。EF中的迁移功能能够以递增方式更新数据库架构,使其与应用程序的数据模型保持同步,同时保留数据库中的现有数据。

       当引入数据模型更改时,开发人员使用EF工具添加相应的迁移,以描述使数据库架构保持同步所需的更新。EF将当前模型与旧模型的快照进行比较,以确定差异,并生成迁移源文件;文件可在项目的源代码管理中进行跟踪,如任何其他源文件。

       生成新的迁移后,可通过多种方式将其应用于数据库。EF在一个特殊的历史记录表中记录所有应用的迁移,使其知道哪些迁移已应用,哪些迁移尚未应用。

       EF中只有Code First可以很好的支持数据库自动迁移,按照业务系统更改需求对数据库变更要求手动修改POCO。然后编译运行,就可以方便的更新数据库的相关内容,包括数据库表的增加、修改和删除,数据字段的增加、修改和删除,数据库表之间的映射关系等。同时,编译好的执行文件,发送给终端用户,运行执行文件,终端用户业务系统的数据库也会同步更新到最新版本。

      但是Code First需要手动定义实体模型和关系映射,没有可视化编辑工具,特别时在数据库表和数据字段比较多,数据库表之间的关联复杂时,手动定义实体模型和关系映射是非常复杂,并很容易出错。

      信管通低代码开发工具是选用EF的Code First作为数据库访问方法,同时我们又对它进行了优化和改造,主要是设计了一个可视化的定义界面,包括数据库表的定义,数据库字段的定义,数据库表之间的关系定义、数据库字段的验证定义等

 数据库表和字段设计

       如上图所示,左边的网格列表框中列出的是“院校财务报销信息管理系统”项目所涉及所有数据库表列表,右边是针对某一个数据库表所设置的数据库字段,字段验证和满足某些条件时编辑框所显示的颜色。

 数据库关系设计

       数据库字段不仅包含【数据库表主键】、【是否非空】,【字段类型】,【字段长度】,【小数位数】的基本信息,还包含【可重复项】、【重复提示信息】、【初始值】、【空白提示】、【显示类型】和【测试数据】等信管通低代码开发工具内部自动化处理需要的信息,同时通过【外建数据表名】和【级联方式】定义这张数据库表通过这个字段关联其他数据库表的定义关系。

       通过信管通低代码开发工具的可视数据库设计功能设计好业务系统相关数据库后,通过数据库定义生成功能,系统会生成完整的EF Code First的可执行C#代码。通过编译并运行就可以生成相应的数据库。

数据库EF Code First代码

信管通低代码开发工具仅对SQL server进行了适配,理论上也应该可以连接mysql、oracle、sqlite等不同数据库,但在实际适配过程中,数据库自动迁移存在问题,暂时无法解决。下图是运行EF Code First的可执行程序生成的SQLserver数据库结果。

生成SQLserver数据库结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值