WTM快速开发框架学习(一)第一个工程

目录

 

为什么使用WTM

创建工程

创建第一个 Model

生成ViewModel


为什么使用WTM

 WTM即WalkingTec.Mvvm,是一个基于.Asp.net Core 和Entity Framework Core的快速开发框架,可以快速上手搭建项目,将重复性的工作交给框架,开发者可以更加专注于业务逻辑。

 对于我个人而言,使用快速开发框架,不仅是能够提高开发效率,更是在工作中不断加大的开发需求量以及网络安全压力下,使用框架开发,来取代之前使用Asp.net Framework纯手工搭建Web,显得尤为重要。WTM框架提供了丰富的后台数据管理功能,包括权限控制、日志记录等系统性功能,使我们的系统更加安全稳定。以近期的开发任务“故障统计”为例,记录学习。

创建工程

  • 输入项目名称

  • 配置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

  • 重启程序,运行

 

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值