WTM快速开发框架学习(一)第一个工程
目录
为什么使用WTM
创建工程
创建第一个 Model
生成ViewModel
为什么使用WTM
WTM即WalkingTec.Mvvm,是一个基于.Asp.net Core 和Entity Framework Core的快速开发框架,可以快速上手搭建项目,将重复性的工作交给框架,开发者可以更加专注于业务逻辑。
对于我个人而言,使用快速开发框架,不仅是能够提高开发效率,更是在工作中不断加大的开发需求量以及网络安全压力下,使用框架开发,来取代之前使用Asp.net Framework纯手工搭建Web,显得尤为重要。WTM框架提供了丰富的后台数据管理功能,包括权限控制、日志记录等系统性功能,使我们的系统更加安全稳定。以近期的开发任务“故障统计”为例,记录学习。
创建工程
进入WTM官网:https://wtmdoc.walkingtec.cn/
点击官网右上角的“这里”
输入项目名称
配置WTM框架的设置
点击开始配置,下载Visual Studio项目工程
创建第一个 Model
- 打开工程,在TxdFaultStatistics.Model下创建类:Workship,创建“部门”表
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
using WalkingTec.Mvvm.Core;namespace TxdFaultStatistics.Model
{[Table("workship")] //实体数据库表名public class Workship:BasePoco,ITreeData<Workship>{[Display(Name="部门(车间)名称")] //前端显示的字段名[Required(ErrorMessage ="部门(车间)名称是必填项")]public string Name { get; set; }public List<Workship> Children { get; set; }public Workship Parent { get; set; }public Guid? ParentId { get; set; }}
}
继承框架的BassPoco类,会继承BassPoco类中的几个字段,以及父类TopBasePoco。
- 创建第二个Model,Group类,并且与Workship建立外键级联
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
using WalkingTec.Mvvm.Core;namespace TxdFaultStatistics.Model
{[Table("group")]public class Group:BasePoco{[Display(Name = "班组名称")][Required(ErrorMessage = "班组名称是必填项")]public string Name { get; set; }public Workship Workship { get; set; }[Display(Name = "所属部门")][Required(ErrorMessage = "所属部门是必填项")]public Guid? WorkshipId { get; set; }}
}
- 创建第三个Model,RailwayLine类,记录线路的名称
using Microsoft.AspNetCore.Cors;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
using WalkingTec.Mvvm.Core;namespace TxdFailureStatistics.Model
{[Table("railway_line")]public class RailwayLine:BasePoco, ITreeData<RailwayLine>{[Display(Name ="线路名称")][Required(ErrorMessage ="线路名称是必填项")]public string Name { get; set; }public List<RailwayLine> Children { get; set; }[Display(Name ="父级")]public RailwayLine Parent { get; set; }[Display(Name = "父级")]public Guid? ParentId { get; set; }}
}
- 创建第四个Model,OpticalCable类,记录光缆名称,并与RailwayLine外键级联。
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
using WalkingTec.Mvvm.Core;namespace TxdFailureStatistics.Model
{[Table("optical_cable")]public class OpticalCable:BasePoco{[Display(Name = "光(电)缆名称")][Required(ErrorMessage = "光(电)缆名称是必填项")]public string Name { get; set; }public RailwayLine RailwayLine { get; set; }[Display(Name = "所属线路名称")][Required(ErrorMessage = "所属线路名称是必填项")]public Guid? RailwayLineId { get; set; }}
}
- 创建第五个Model,OpticalCableFailure类,记录线路故障
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
using WalkingTec.Mvvm.Core;namespace TxdFaultStatistics.Model
{public enum RialwayLineTypeEnum{普速, 高铁}public enum ManageAttributesEnum{有线, 无线}public enum OpticalCableLevelEnum{地区, 干线}public enum DiscontinuityTypeEnum{自然灾害, 施工, 尾纤故障, 缆身故障, 绝缘不良}public enum InformationSourcesEnum{用户申告, 上级部门通知, 网管通知, 车间通知}[Table("optical_cable_failure")]public class OpticalCableFailure : BasePoco {[Display(Name = "发生时间")][Required(ErrorMessage = "时间是必填项")]public DateTime? Time { get; set; }[Display(Name ="车间")]public Workship Workship { get; set; }[Display(Name = "车间")][Required(ErrorMessage ="所属车间是必填项")]public Guid WorkshipId { get; set; }[Display(Name ="所属工区")]public Group Group { get; set; }[Display(Name = "所属工区")][Required(ErrorMessage ="所属工区是必填项")]public Guid GroupId { get; set; }[Display(Name = "线路属性")][Required(ErrorMessage = "线路属性为必填项")]public RialwayLineTypeEnum? RailwayLineType { get; set; }[Display(Name = "管理属性")][Required(ErrorMessage = "管理属性为必填项")]public ManageAttributesEnum? ManageAttributes { get; set; }[Display(Name ="线路名称")]public RailwayLine RailwayLine { get; set; }[Display(Name ="线路名称")][Required(ErrorMessage ="线路名称是必填项")]public Guid RailwayLineId { get; set; }[Display(Name = "光(电)缆名称")]public OpticalCable OpticalCable { get; set; }[Display(Name = "光(电)缆名称")][Required(ErrorMessage = "光(电)缆名称是必填项")]public Guid OpticalCableId { get; set; }[Display(Name ="光(电)缆等级")][Required(ErrorMessage = "光(电)缆等级为必填项")]public OpticalCableLevelEnum? OpticalCableLevel { get; set; }[Display(Name = "机房名称")][Required(ErrorMessage = "机房名称为必填项")]public string HouseName { get; set; }[Display(Name = "光(电)缆中断区域")][Required(ErrorMessage = "光(电)缆中断区域为必填项")]public string OpticalCableDiscontinuityArea { get; set; }[Display(Name = "测试站")][Required(ErrorMessage = "测试站为必填项")]public string TestStation { get; set; }[Display(Name = "断点距测试站距离(KM)")][Required(ErrorMessage = "断点距测试站距离为必填项")]public string DiscontinuityToStationDistance { get; set; }[Display(Name = "断点对应公里标(K***+***)")][Required(ErrorMessage = "断点对应公里标为必填项")]public string DiscontinuityCorrespondRailwayKilometerMark { get; set; }[Display(Name = "中断分类")][Required(ErrorMessage = "中断分类为必填项")]public DiscontinuityTypeEnum? DiscontinuityType { get; set; }[Display(Name ="原因描述")][Required(ErrorMessage = "原因描述为必填项")]public string ReasonDescription { get; set; }[Display(Name ="处理结果")][Required(ErrorMessage = "处理结果为必填项")]public string ProcessResult { get; set; }[Display(Name = "信息来源")][Required(ErrorMessage = "信息来源为必填项")]public InformationSourcesEnum? InformationSources { get; set; }[Display(Name = "发生时间")][Required(ErrorMessage ="发生时间是必填项")]public DateTime? BeginTime { get; set; }[Display(Name ="恢复时间")][Required(ErrorMessage = "恢复时间是必填项")]public DateTime? EndTime { get; set; }[Display(Name ="备注")]public string Remark { get; set; }}
}
- 在TxdFaultStatistics.DataAccess下的DataContext下添加生成数据库表的代码
public DbSet<RailwayLine> RailwayLines { get; set; }
public DbSet<OpticalCable> OpticalCables { get; set; }
public DbSet<Workship> Workships { get; set; }
public DbSet<Group> Groups { get; set; }
public DbSet<OpticalCableFailure> OpticalCableFailures { get; set; }
生成ViewModel
- 运行工程
- 进入程序,点击代码生成器
- 选择模型,输入区域(可选),输入模块名称,选择认证方式为Cookie,生成相应的ViewModel
- 重启程序,运行
WTM快速开发框架学习(一)第一个工程相关推荐
- 强烈推荐一个超棒的可学习更可商用的快速开发框架——WTM快速开发框架(开源)
童鞋们啊,作为一个快毕业的专业与信息技术相关的二流大学僧,平常上课如听书,下课打地鼠,浑浑噩噩等到毕设来临,才知道自己是半桶水晃荡,一个完整地项目都运行不起来- 别嘲笑我啊,我打赌起码有一半的大学生都 ...
- Qt学习-创建第一个工程
目录 一些杂碎相关知识 基本框架 如何创建项目 1.创建一个Applicant 2.选择路径 3.选择编译器 一些杂碎相关知识 面向对象(c++)------->不用关注细节,会用就行. 可以开 ...
- 如何快速学习STAR-CCM+软件解决工程实际问题
附赠仿真学习包,包含结构.流体.电磁.热仿真等多学科视频教程,点击领取: 仿真秀粉丝专属礼包 作者:Tsinglin,仿真秀专栏作者 随着CFD技术的发展,CFD已成为现在工程应用中用于解 ...
- 2.3 快速搭建你的第一个系统,并进行迭代-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 2.2 清除标注错误的数据 回到目录 2.4 在不同的划分上进行训练并测试 快速搭建你的第一个系统,并进行迭代 (Build Your First System Quickl ...
- 2018第一作,JFDF快速开发框架的横空出世
前言 写在前面的话,致每一位读者! 任何事物的诞生总有她的必然性和偶然性,就如牛顿当年坐在树下被水果砸中头后发明了万有引力,是坐下树下的偶然,也是历史推动的必然. JFDF也不例外,作为一个游走在职场 ...
- android的快速开发框架集合
android的快速开发框架集合 出自:http://blog.csdn.net/shulianghan/article/details/18046021 1.Afinal (快速开发框架) 简介: ...
- Django 开发框架学习(一)
Django 开发框架学习 Django流程 重点 Django介绍 1. 简介 2. 特点 1) 重量级框架 2)MVT模式 MVC模式说明 Django的MVT 3. Django学习资料 为什么 ...
- HarmonyOS(一) 快速开始学习鸿蒙开发,官方文档学习路线解析
系列文章目录 HarmonyOS(一):快速开始学习鸿蒙开发,官方文档学习路线解析 HarmonyOS(二):应用开发环境搭建准备 HarmonyOS(三):创建你的第一个HelloWorld应用 文 ...
- (转)利用快速开发框架,快速搭建微信浏览博客园首页文章
原文地址:http://www.cnblogs.com/inday/p/weixin-publicf-platform-cnblogs.html 这几天接连发布了<快速开发微信公众平台框架--- ...
最新文章
- 201621123030《Java程序设计》第4周学习总结
- Matlab大气湍流退化模型
- (pytorch-深度学习系列)pytorch卷积层与池化层输出的尺寸的计算公式详解
- 5分钟 NLP系列—— 11 个词嵌入模型总结
- 训练作用_我们口才训练微信群有哪些重要作用?
- 我错了,有个叫 SelectSingleNode 的可以操作 xml
- CVPR 2021 | 港科大:如何利用闪光图像(flash image)来去除反光
- thinkphp5每周学习总结1019
- python 追加到字典_使用Python读取,写入和解析JSON
- 整理总结一下:git恢复本地误删除的分支
- 数据分析之如何制作数据埋点文档
- 递归,复制对象,找质数,判断数组
- linux SO文件
- mysql有闪回吗_【赵强老师】MySQL的闪回
- IO第二天 低级流 缓冲流BOS 对象流OOS
- 工程实践中的体系与系统
- SpringCLoud+redis+es高并发项目《九》(Spring Security Oauth2 JWT)
- ERC20接口下USDT代币的深入解析
- 基于opencv的SVM车牌号码识别模型训练(C++)QT
- 使用BackTrack来增强电脑的安全
热门文章
- Java中的运算符——赋值运算符详解
- 如何重置计算机服务到默认状态,如何重置Windows10到出厂默认设置
- 国内现有主要量化交易策略
- 16TB布局谋发展,东芝企业级硬盘这次抢了个
- 微信活动——微信房产经纪公司评比活动
- 春运一票难求,你知道12306是什么语言编写开发的吗?
- 【2017】Large-Scale YouTube-8M Video Understanding with Deep Neural Networks借助深度神经网络对YT8M进行大规模视频理解
- 接口测试-header
- Backtrace 分析
- 通往“第三极”:从AppGallery,解析华为移动开发生态的差异化跳板