最近在写一个后台任务轮询的项目,了解下来最终选择了quartZ , 既然是项目,那么首当其冲的是 数据库访问层,.net core 已经出到3.0了 ,小白的我也想尝试一下,个人还是喜欢ORM框架,那么说起微软ORM框架首想的应该是EntityFramework 了, OK 接下来就让我一起来入门吧,这里我先从.net core 控台台应用程序开始。
既然是ORM框架,首先应该有Model(本次采用code first 模式),一顿常规操作之后
我们的类如下:
public class QuartJobLog { private int _id = 0; private string _job_name; private string _job_result; private string _job_exception; private int _job_exetime; private DateTime _job_exedate; private int _job_exestate; private DateTime _addtime; /// <summary> /// 主键 /// </summary> public int Id { get => _id; set => _id = value; } /// <summary> /// /// </summary> public int JobId { get; set; } /// <summary> /// 任务名称 /// </summary> public string Job_name { get => _job_name; set => _job_name = value; } /// <summary> /// 执行的结果 /// </summary> public string Job_result { get => _job_result; set => _job_result = value; } /// <summary> /// 执行任务的异常信息 /// </summary> public string Job_exception { get => _job_exception; set => _job_exception = value; } /// <summary> /// 执行耗时,单位ms /// </summary> public int Job_exetime { get => _job_exetime; set => _job_exetime = value; } /// <summary> /// 任务的执行的日期时间 /// </summary> public DateTime Job_exedate { get => _job_exedate; set => _job_exedate = value; } /// <summary> /// 执行结果 0 正常,1 异常 /// </summary> public int Job_exestate { get => _job_exestate; set => _job_exestate = value; } /// <summary> /// 任务的执行时间 /// </summary> public DateTime Addtime { get => _addtime; set => _addtime = value; } }
public class QuartJobSchedule { private int _id = 0; private string _job_name; private string _job_assembly; private string _job_class; private string _job_corn; private int _job_type = 1; private int _job_execount = 0; private DateTime _job_starttime; private int _job_state = 0; private DateTime _addtime; /// <summary> /// 主键 /// </summary> public int Id { get => _id; set => _id = value; } /// <summary> /// 任务名称 /// </summary> public string Job_Name { get => _job_name; set => _job_name = value; } /// <summary> /// 执行的方式的dll名称 /// </summary> public string Job_Assembly { get => _job_assembly; set => _job_assembly = value; } /// <summary> /// 执行的方法类 /// </summary> public string Job_Class { get => _job_class; set => _job_class = value; } /// <summary> /// 执行任务的corn表达式 /// </summary> public string Job_Corn { get => _job_corn; set => _job_corn = value; } /// <summary> /// 任务类型,默认为1 简单,2 复杂 /// </summary> public int Job_Type { get => _job_type; set => _job_type = value; } /// <summary> /// 任务的执行总次数,0表示无限次 /// </summary> public int Job_Execount { get => _job_execount; set => _job_execount = value; } /// <summary> /// 任务开始时间 /// </summary> public DateTime Job_Starttime { get => _job_starttime; set => _job_starttime = value; } /// <summary> /// 任务的状态 0 准备中,1 执行中,2 暂定,3 停止,4 结束 /// </summary> public int Job_State { get => _job_state; set => _job_state = value; } /// <summary> /// 任务的创建时间 /// </summary> public DateTime AddTime { get => _addtime; set => _addtime = value; } }
接下来我们继续添加上下文对象
public class DataDBContext : DbContext { //public DataDBContext(DbContextOptions<DataDBContext> options) // : base(options) //{ } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySql("server=.;database=*****;User ID=***;Password=****"); } public DbSet<QuartJobLog> QuartJobLogs { get; set; } public DbSet<QuartJobSchedule> QuartJobSchedules { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<QuartJobLog>(entity => { entity.ToTable("QuartJobLog"); entity.HasKey(e => e.Id); }); modelBuilder.Entity<QuartJobSchedule>(entity => { entity.ToTable("QuartJobSchedule"); entity.HasKey(e => e.Id); }); } }
接下来就是迁移数据库的操作了,这里我们用nuget 管理工具 导入 Pomelo.EntityFrameworkCore.MySql ,Microsoft.EntityFrameworkCore.Tools,等VS操作完成之后,我们在nuget包管理控制程序输入
迁移命令,1.add-migration First_Migration,2.Update-Database 项目选择对应的,如果是类库的话就选择类库的项目
生成成功后数据库中就有对应的表了