在具体数据库操作之前,我们先准备好四张表以及相对应数据库操作模型: 学生表,年级表,班级表,学分表。示例数据库表,如下代码(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的常量与变量

    1.Python属于强类型编程语言,Python解释器会根据赋值或运算来自动判断变量的类型.Python还是一种动态类型语言,变量的类型也是可以随时变化的. >>> x=3 > ...

  2. ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库

    1.MySQL存储过程   1.1.什么是存储过程 带有逻辑的sql语句:带有流程控制语句(if  while)等等 的sql语句   1.2.存储过程的特点 1)执行效率非常快,存储过程是数据库的服 ...

  3. [leetcode]236. Lowest Common Ancestor of a Binary Tree树的最小公共祖先

    如果一个节点的左右子树上分别有两个节点,那么这棵树是祖先,但是不一定是最小的,但是从下边开始判断,找到后一直返回到上边就是最小的. 如果一个节点的左右子树上只有一个子树上遍历到了节点,那么那个子树可能 ...

  4. 5. Longest Palindromic Substring最大回文子串

    int sta = 0; int max = 1; public String longestPalindrome(String s) { /* 判断回文有两种: 1.最大回文子序列求长度: 用动态规 ...

  5. 三目运算符(C++)

    一.简介 固定格式 ?: 三目运算符:可用于赋值语句 三目运算表达式:<表达式1>?<表达式2>:<表达式3> 注:"?"运算符的含义是: 先求 ...

  6. istio kiali 亲和性调度

    一.节点调度 在开始 kiali 亲和性调度之前,先演示一个简单的例子介绍 pod 选择调度到指定 node: 节点打标 使用命令查看当前所有 k8s 节点: [root@k8s-master ~]# ...

  7. 软件工程UML第一次作业

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 这个作业要求在哪里 https://edu.cnblogs.com/campus/f ...

  8. Linux服务器以及系统性能排查常用命令

    一.在Linux系统中排查CPU故障的方法和技巧 1.top命令 Linux内部命令,可以查看实时的CPU的使用情况,也可以查看CPU最近一段时间CPU的使用情况 Linux下常用的性能分析工具,能够 ...

  9. Facetoobject_encapsulation

    面向对象程序设计思想 一.思想 处处皆对象. 当提到某一功能时,首先应该想有没有实现该功能的对象,有则调用,没有则创建类.当提到数据时,应该想到属于哪个对象. 1.求1~n的累加和 public cl ...

  10. PHP 判断手机端还是web端

    function isMobile(){ // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) re ...