历史地理和生物我觉得可以整在一起,只是一个类型字段解决。
主要有三个功能有:
知识点,都以时间(单元)进行分类,可以一目了然的看到重点
题库设计,以人为分析是否对和正确,不分什么选择什么题型了。
在题库增加的时候,自动增加类型

建立区域

设计三科的区域

  • 首先新建区域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”)) { }

  1. static LDSSubjectArea() => RegisterArea<LDSSubjectArea>();
  2. }

}

<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下
- ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1174002/1631353419895-97c6e1fe-a19d-45c3-a687-20143f7a96ac.png#clientId=u785d3569-f8f4-4&from=paste&height=199&id=uf6ad2897&margin=%5Bobject%20Object%5D&name=image.png&originHeight=199&originWidth=660&originalType=binary&ratio=1&size=19179&status=done&style=none&taskId=u7c5e44a2-9f06-4b80-87de-e556bad4f37&width=660)
- 确保build.tt/build_netcore.tt文件属性中的自定义工具为 TextTemplatingFileGenerator 。
- ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1174002/1626580436929-a0f87403-8a3b-4e96-906d-c5562986967c.png#clientId=u45c174d6-8d92-4&from=paste&height=154&id=ub54e7809&margin=%5Bobject%20Object%5D&name=image.png&originHeight=154&originWidth=460&originalType=binary&ratio=1&size=10589&status=done&style=none&taskId=ud6d79466-abd2-4a48-92b6-b718d71f96f&width=460)
- 设计表
- 注意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>
# 生成实体
![image.png](https://cdn.nlark.com/yuque/0/2021/png/1174002/1631408778357-4887517c-d74c-4cb0-aa28-5bcbe7e10c84.png#clientId=u1930f85f-db85-4&from=paste&height=205&id=u068e955f&margin=%5Bobject%20Object%5D&name=image.png&originHeight=205&originWidth=366&originalType=binary&ratio=1&size=10483&status=done&style=none&taskId=u2a5e0503-0c71-40c2-a9bc-b81e8967750&width=366)
<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 { protected override IDictionary 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 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
image.png