历史地理和生物我觉得可以整在一起,只是一个类型字段解决。
主要有三个功能有:
知识点,都以时间(单元)进行分类,可以一目了然的看到重点
题库设计,以人为分析是否对和正确,不分什么选择什么题型了。
在题库增加的时候,自动增加类型
建立区域
设计三科的区域
- 首先新建区域LDSSubject,手动创建文件夹Areas/LDSSubject,在此文件夹创建区域类LDSSubjectArea,填入以下内容 ``` using System; using System.ComponentModel; using NewLife; using NewLife.Cube;
namespace dqltest.Areas.LDSSubject { [DisplayName(“历史生物地理”)] public class LDSSubjectArea : AreaBase { public LDSSubjectArea() : base(nameof(LDSSubjectArea).TrimEnd(“Area”)) { }
static LDSSubjectArea() => RegisterArea<LDSSubjectArea>();
}
}
<a name="BlJRz"></a>
# 创建实体
- 新建数据库实体类,参考[数据中间件NewLife.XCode教程](https://www.yuque.com/smartstone/xcode)。新建文件夹Areas/LDSSubject/Models,将实体类放在此文件夹,具体内容参考[这里](https://github.com/NewLifeX/NewLife.Cube/tree/master/CubeDemoNC/Areas/School/Models) 。
- 将这二个文件COPY到models下
- 
- 确保build.tt/build_netcore.tt文件属性中的自定义工具为 TextTemplatingFileGenerator 。
- 
- 设计表
- 注意string要加上Length="200" ,要不然默认是 varchar(50),或是 加个属性,Length="-1" ,我是使用的length,因为要是-1,刚会生成longtext字段,好用是好用,在魔方后台的表中,会被默认隐藏。只能是编辑的时候才显出来
- 此次我准备设计几个表,一是每个学科对应的单元名称,用于新添加的时候导入选择, 读取的时候,出题的时候都可以。二是一个要点表,主要是学科,然后关键词,比如商朝,时间(公元--),创建人(禹),要点(1.2.3.4。。。),同一时间国外历史重点事件,一二我合在一个表了。
- 一个题库,主要是解释答案,自己说对或错。错了,就给错误次数加1,
- 同时应该还是要一个错题库,记录登录名,错误题目ID,我们宗旨是不能出现有错题拉,有就做对清空列表。这个和英语这些一致。
- <br />
- 注意这里也有一个model,我们先把这三个表建起。
<?xml version=”1.0” encoding=”utf-8”?>
<Table Name="SubjectUnit" Description="学科目录" RenderGenEntity="True">
<Columns>
<Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
<Column Name="SubjectName" DataType="String" Description="学科" />
<Column Name="Unit" DataType="String" Description="单元" />
<Column Name="KeyPoints" DataType="String" Description="关键点" />
<Column Name="KeyPointsList" DataType="String" Length="-1" Description="知识要点" />
<Column Name="Bei1" DataType="String" Length="400" Description="备注1" />
<Column Name="Bei2" DataType="String" Length="400" Description="备注2" />
<Column Name="CreateUser" DataType="String" Description="创建者" />
<Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
<Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
</Columns>
</Table>
<Table Name="LDSErrorTable" Description="历地生错题" RenderGenEntity="True">
<Columns>
<Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
<Column Name="SubjectName" DataType="String" Description="学科" />
<Column Name="ErrorID" DataType="Int32" Description="错题ID" />
<Column Name="ErrorNumbers" DataType="Int32" Description="错误次数" />
<Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
<Column Name="Bei1" DataType="String" Length="400" Description="备注1" />
<Column Name="CreateUser" DataType="String" Description="创建者" />
</Columns>
</Table>
<a name="d23G9"></a>
# 生成实体

<a name="lbBxv"></a>
# 建区域菜单控制器
- 新建文件夹Areas/LDSSubject/Controllers,新建LDSErrorTableController、SubjectUnitController、LDSTiMuController三个控制器,分别填入以下内容。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Reflection; using Microsoft.AspNetCore.Mvc; using NewLife.Cube; using NewLife.Web; using XCode.Membership;
namespace dqltest.Areas.LDSSubject.Controllers
{
[LDSSubjectArea]
[DisplayName(“历地生错题”)]
public class LDSErrorTableController : EntityController
```
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using Microsoft.AspNetCore.Mvc;
using NewLife.Cube;
using NewLife.Web;
using XCode.Membership;
namespace dqltest.Areas.LDSSubject.Controllers
{
[LDSSubjectArea]
[DisplayName("历地生单元")]
public class SubjectUnitController : EntityController<SubjectUnit>
{
protected override IDictionary<MethodInfo, Int32> ScanActionMenu(IMenu menu)
{
menu.Visible = true;
return base.ScanActionMenu(menu);
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using Microsoft.AspNetCore.Mvc;
using NewLife.Cube;
using NewLife.Web;
using XCode.Membership;
namespace dqltest.Areas.LDSSubject.Controllers
{
[LDSSubjectArea]
[DisplayName("历地生题")]
public class LDSTiMuController : EntityController<LDSTiMu>
{
protected override IDictionary<MethodInfo, Int32> ScanActionMenu(IMenu menu)
{
menu.Visible = true;
return base.ScanActionMenu(menu);
}
}
}
然后测试区域菜单
使用F5