在具体数据库操作之前,我们先准备好四张表以及相对应数据库操作模型: 学生表,年级表,班级表,学分表。示例数据库表,如下代码(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. Python写一个对象,让它自己能够迭代

    仿写range()对象,对象是可迭代的: 1 #!usr/bin/env python3 2 # -*- coding=utf-8 -*- 3 4 class myRange(): 5 #初始化,也叫 ...

  2. 【mybatis-plus】CRUD必备良药,mybatis的好搭档

    做开发,免不了对数据进行增删改查,那么mybatis-plus我觉得很适合我这个java新手,简单好用. 官网在这 一.什么是mybatis-plus MyBatis-Plus(简称 MP),是一个M ...

  3. C#中打印拼接的字符串

    实例化打印文档 //声明打印对象 PrintDocument pd = new PrintDocument(); int ilvPreviewIndex = 0; 在打印事件中设置基本属性 priva ...

  4. [.NET] - 初步认识AutoMapper

    初步认识AutoMapper AutoMapper 初步认识AutoMapper 前言 手动映射 使用AutoMapper 创建映射 Conventions 映射到一个已存在的实例对象   前言 通常 ...

  5. 万恶的NPE差点让我半个月工资没了

    引言 最近看到<阿里巴巴Java开发手册>(公众号回复[开发手册]免费获取)第11条规范写到: 防止 NPE ,是程序员的基本修养 NPE(Null Pointer Exception)一 ...

  6. 讲两个int 数组找出重复的数字 用最少的循环

    int a[] = {1,3}; int b[] = {1,3,5}; int size = a.length>b.length ?a.length:b.length; int valueA = ...

  7. Python & Matplotlib: Monte Carlos Method

    Hey! 这里是Lindy:) Hope you guys are doing well! 今天想记录的概念叫做 蒙特·卡罗 方法,是今年在cs课上老师做的扩展延伸.其实我在初次接触这个概念时觉得很新 ...

  8. Linux 时间同步 04 ntp时间同步

    Linux 时间同步 04 ntp时间同步 目录 Linux 时间同步 04 ntp时间同步 安装ntp 配置与外部时间服务器进行时间同步的客户端主机 配置其他客户端与以上客户端主机时间同步 验证查看 ...

  9. 记录一次 Nginx 配置 proxy_pass 后 返回404问题

    一. Nginx 配置 proxy_pass 后 返回404问题 故障解决和定位 1.1. 问题 在一次生产涉及多次转发的配置中, 需求是下面的图: 在配置好了 proxy_pass 之后,请求 ww ...

  10. 中移动ipv6-老毛子固件获取ipv6设置

    对于有ipv6的服务商原理上可以参照下图