在具体数据库操作之前,我们先准备好四张表以及相对应数据库操作模型: 学生表,年级表,班级表,学分表。示例数据库表,如下代码(MSSQL 为例)

--学生表
CREATE TABLE t_student
(
FID INT IDENTITY(1,1) PRIMARY KEY, --主键
FName VARCHAR(100), --名称
FAage INT,--年龄
FClassId INT, --班级Id
FAddTime DATETIME DEFAULT GETDATE()
) --学分表
CREATE TABLE t_StudentScore
(
FID INT IDENTITY(1,1) PRIMARY KEY, --主键
FStudentId INT, --学生
FScore INT, --分数
FAddTime DATETIME DEFAULT GETDATE()
) --班级表
CREATE TABLE t_class
(
FID INT IDENTITY(1,1) PRIMARY KEY, --主键
FName VARCHAR(100), --班级名称
FGradeId INT, --年级
FAddTime DATETIME DEFAULT GETDATE(),
) --年级表
CREATE TABLE t_Grade
(
FID INT IDENTITY(1,1) PRIMARY KEY,--主键
FName VARCHAR(100),--年级名称
FAddTime DATETIME DEFAULT GETDATE(),
)

创建对应的 BTORM 数据库模型

备注NOTIC:

  • BTORM 数据库模型必须继承自  Bitter 框架中的 BaseModel 类。
  • 模型必须导入命名空间:BT.Manage.Core 和 BT.Manage.Tools.Attributes。
  • 字段建议加上 virtual  属性如:  public virtual Int32? FStudentId { get; set; }      高级功能中--字段变更收集器中会用到 --- 此条为非必要,建议加上 virtual 属性
  • 模型必须有自增长主键,并且主键类型为int identity 类型 与EF 类似,主键上必须写上字段属性[Key] 和 [Identity] 属性,Bitter orm 框架才能识别此字段为主键并且是自增长
  • 模型必须指定物理表名:在模型类名上打上类标签属性: [TableName("tablename")]
  • 模型中 第一个字符 为 ‘_’的字段,BTORM 认为此此段不是数据库的映射字段。如下面学生 学生表-model 中的 _notDataBaseFiled  字段。

学生表-model:

[TableName("t_student")]
public class TStudentInfo : BaseModel
{
/// <summary>
/// 主键
/// </summary>
[Key]
[Identity]
[Display(Name = @"主键")]
public virtual Int32 FID { get; set; } /// <summary>
/// 姓名
/// </summary>
[Display(Name = @"姓名")]
public virtual String FName { get; set; } /// <summary>
/// 年龄
/// </summary>
[Display(Name = @"年龄")]
public virtual Int32? FAage { get; set; } /// <summary>
/// 班级
/// </summary>
[Display(Name = @"班级")]
public virtual Int32? FClassId { get; set; } /// <summary>
/// 插入时间
/// </summary>
[Display(Name = @"插入时间")]
public virtual DateTime? FAddTime { get; set; } /// <summary>
/// 此为非数据库字段
/// </summary>
public virtual String _notDataBaseFiled { get { return this.FName+this.FAage; }} //此字段为非数据库字段,虽然此字段存在数据库模型中,但是此字名称 第一个字符为下划线 ’_’, BTORM 在执行过程中,不会映射到数据库层面.
}

学分表-model:

[TableName("t_StudentScore")]
public class TStudentScoreInfo : BaseModel
{
/// <summary>
/// 主键
/// </summary>
[Key]
[Identity]
[Display(Name = @"主键")]
public virtual Int32 FID { get; set; } /// <summary>
///
/// </summary>
[Display(Name = @"学生Id")]
public virtual Int32? FStudentId { get; set; } /// <summary>
///
/// </summary>
[Display(Name = @"学分")]
public virtual Int32? FScore { get; set; } /// <summary>
/// 插入时间
/// </summary>
[Display(Name = @"插入时间")]
public virtual DateTime? FAddTime { get; set; } }

年级表-model:

[TableName("t_Grade")]
public class TGRADEInfo : BaseModel
{
/// <summary>
/// 主键
/// </summary>
[Key]
[Identity]
[Display(Name = @"主键")]
public virtual Int32 FID { get; set; } /// <summary>
/// 年级名称
/// </summary>
[Display(Name = @"年级名称")]
public virtual String FName { get; set; } /// <summary>
/// 插入时间
/// </summary>
[Display(Name = @"插入时间")]
public virtual DateTime? FAddTime { get; set; }


}

班级-model:

[TableName("t_class")]
public class TClassInfo : BaseModel
{
/// <summary>
/// 主键
/// </summary>
[Key]
[Identity]
[Display(Name = @"主键")]
public virtual Int32 FID { get; set; } /// <summary>
/// 班级名称
/// </summary>
[Display(Name = @"班级名称")]
public virtual String FName { get; set; } /// <summary>
/// 年级Id
/// </summary>
[Display(Name = @"年级Id")]
public virtual Int32? FGradeId { get; set; } /// <summary>
/// 插入时间
/// </summary>
[Display(Name = @"插入时间")]
public virtual DateTime? FAddTime { get; set; } }

Bitter.Core系列三:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 之 示例模型创建的更多相关文章

  1. Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 开源了

    开源的来了,懒人程序员的福音,.NET 生态闭环太缺开源精神了, 拥抱开源! 前言: 本人不是不喜欢现有ORM的轮子,而是发现现有的ORM 的都不太符合开发人员的一些习惯.现有的ORM 要么功能太冗余 ...

  2. Bitter.Core系列五:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 之 示例 分页聚联查询

    Bitter.Core 在聚联/分页聚联查询的时候,采用原生的MSSQL, MYSQL 语句查询,做过复杂高级项目的人知道,原生的聚合查询代码执行效率更高,更快,更容易书写,开发量最少. 借助原生的M ...

  3. Bitter.Core系列二:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 之数据库连接

    Bitter.Core NETCore 相当的简单易用,下面附上使用示例: 数据中连接:请在你的NETCORE 项目中 创建:Bitter.json 配置文件,然后追加如下配置内容: MSSQL 连接 ...

  4. Bitter.Core系列 十二 :Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 支持的 where 条件表达式

    Bitter.Core 内置了支持大部分的 linq 的条件表达式.基本上符合我们 where 条件所需.Bitter.Core 的支持 表达式内置  扩展 有: EndsWith    在Sql 解 ...

  5. Bitter.Core系列十一:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 字段变更收集器

    有时候我们业务层需要记录 数据库表更改之前的值和更改之后的值的记录集合--此过程在 Bitter.Core 中有强有力的支持.Bitter.Core 字段收集器提供了方便简单易用的 收集对象在修改之前 ...

  6. Bitter.Core系列十:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 Log 日志

    Bitter 框架的 Log 全部采用 NLog 日志组件.Bitter.Core 的 执行语句的日志记录 Nlog 日志级别为:info.  如果想要查看Bitter.Core 的执行SQL,先要去 ...

  7. Bitter.Core系列九:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 WITH 子句支持

    有时我们在聚合查询中,经常会有复杂的聚联查询.有时表的聚联查询SQL 子句比较复杂,DBA 会经常告诉们,能否通过WITH 子句优化.WITH 子句,是对SQL 聚联查询的优化.Bitter.Core ...

  8. Bitter.Core系列八:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 事务

    Bitter.Core 编写事务相当简单,Bitter.Core 尽可能的将代码编写量降为最低,例外一方方面保证客户主观能控制代码.Bitter.Core 事务提交,支持Builkcopy事务,原生事 ...

  9. Bitter.Core系列七:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 示例 更新删除插入

    Bitter Orm 在操作数据库增删改的时候,支持模型驱动和直接执行裸SQL 操作,示例代码如下: 一:模型驱动(增删改) /// <summary> /// 插入,删除,更新示例(模型 ...

随机推荐

  1. Autofac的基本使用---目录

    目录 Autofac的基本使用---1.前言 Autofac的基本使用---2.普通类型 Autofac的基本使用---3.泛型类型 Autofac的基本使用---4.使用Config配置 Autof ...

  2. idea修改项目名导致无法找到主类

    描述 本地创建项目copy或者是修改项目名和文件夹名称后 启动springboot项目失败 控制台报错 错误无法找到主类 解决办法 1. 求助互联网得知 需要执行 mvn clean install( ...

  3. Android 自定义构建类型 BuildType

    简单介绍了 BuildType 定义在 app 项目与 module 项目的区别,以及在 Gradle 2.x 与 3.x 版本的区别. 最近接触到自定义构建类型 BuildType,发现这一块有些地 ...

  4. 关于SM4 加密算法

    国密SM4算法 与DES和AES算法相似,国密SM4算法是一种分组加密算法.SM4分组密码算法是一种迭代分组密码算法,由加解密算法和密钥扩展算法组成. SM4是一种Feistel结构的分组密码算法,其 ...

  5. springboot日志输出到文件

    今天来谈一谈日志,主要是说一说springboot的日志,因为最近在学习springboot.首先在写代码的时候,要养成记日志的习惯,这点真的很重要,因为之前吃了很多亏.过去我对日志很不在意,该有的日 ...

  6. [leetcode]TwoSum系列问题

    1.普通数组找两个数,哈希表建立数值和下标的映射,遍历时一边判断一边添加 /* 哇,LeetCode的第一题...啧啧 */ public int [] twoSum(int[] nums, int ...

  7. 嵌入式LInux-让开发板访问外网-ping bad address baidu.com

    我的嵌入式设备已经接入网络.能够ping局域网ip.可是为了实现能够ping通外网.比如 ping baidu.com 还是不行的. 当运行ping baidu.com这个命令时,提示 ping ba ...

  8. spring 切面织入报错:java.lang.ClassCastException: com.sun.proxy.$Proxy7 cannot be cast to...

    报这个错,只有一个原因,就是转化的类型不对. 接口过父类的子类,在强制转换的时候,一定要用接口父类来定义. 代码示例: package com.luoluo.dao.impl; import java ...

  9. mysql性能调优注意事项

    1.最左原则  注意遇到> < like  between失效 2.对于like 查询  遇到最左%索引无效 3.SQL性能优化目标:至少要达到range(对索引进行范围查找)级别,要求是 ...

  10. 第八章节 BJROBOT hector 算法构建地图【ROS全开源阿克曼转向智能网联无人驾驶车】

    1.把小车平放在地板上,用资料里的虚拟机,打开一个终端 ssh 过去主控端启动roslaunch znjrobot bringup.launch. 2.在虚拟机端打开一个终端,ssh 过去主控端启动r ...