Bitter.Core系列三:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 之 示例模型创建
在具体数据库操作之前,我们先准备好四张表以及相对应数据库操作模型: 学生表,年级表,班级表,学分表。示例数据库表,如下代码(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 之 示例模型创建的更多相关文章
- Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 开源了
开源的来了,懒人程序员的福音,.NET 生态闭环太缺开源精神了, 拥抱开源! 前言: 本人不是不喜欢现有ORM的轮子,而是发现现有的ORM 的都不太符合开发人员的一些习惯.现有的ORM 要么功能太冗余 ...
- Bitter.Core系列五:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 之 示例 分页聚联查询
Bitter.Core 在聚联/分页聚联查询的时候,采用原生的MSSQL, MYSQL 语句查询,做过复杂高级项目的人知道,原生的聚合查询代码执行效率更高,更快,更容易书写,开发量最少. 借助原生的M ...
- Bitter.Core系列二:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 之数据库连接
Bitter.Core NETCore 相当的简单易用,下面附上使用示例: 数据中连接:请在你的NETCORE 项目中 创建:Bitter.json 配置文件,然后追加如下配置内容: MSSQL 连接 ...
- Bitter.Core系列 十二 :Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 支持的 where 条件表达式
Bitter.Core 内置了支持大部分的 linq 的条件表达式.基本上符合我们 where 条件所需.Bitter.Core 的支持 表达式内置 扩展 有: EndsWith 在Sql 解 ...
- Bitter.Core系列十一:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 字段变更收集器
有时候我们业务层需要记录 数据库表更改之前的值和更改之后的值的记录集合--此过程在 Bitter.Core 中有强有力的支持.Bitter.Core 字段收集器提供了方便简单易用的 收集对象在修改之前 ...
- Bitter.Core系列十:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 Log 日志
Bitter 框架的 Log 全部采用 NLog 日志组件.Bitter.Core 的 执行语句的日志记录 Nlog 日志级别为:info. 如果想要查看Bitter.Core 的执行SQL,先要去 ...
- Bitter.Core系列九:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 WITH 子句支持
有时我们在聚合查询中,经常会有复杂的聚联查询.有时表的聚联查询SQL 子句比较复杂,DBA 会经常告诉们,能否通过WITH 子句优化.WITH 子句,是对SQL 聚联查询的优化.Bitter.Core ...
- Bitter.Core系列八:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 事务
Bitter.Core 编写事务相当简单,Bitter.Core 尽可能的将代码编写量降为最低,例外一方方面保证客户主观能控制代码.Bitter.Core 事务提交,支持Builkcopy事务,原生事 ...
- Bitter.Core系列七:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 示例 更新删除插入
Bitter Orm 在操作数据库增删改的时候,支持模型驱动和直接执行裸SQL 操作,示例代码如下: 一:模型驱动(增删改) /// <summary> /// 插入,删除,更新示例(模型 ...
随机推荐
- win7激活不支持的启动引导分区完美解决方法
前言: 激活win7显示不支持的启动引导分区怎么办?有用户使用暴风激活工具给win7 64位系统激活时,弹出Error提示框"不支持的启动引导分区". 这是因为传统的win7激活工 ...
- 二、LINUX文本处理三剑客之grep
1. grep一般格式:grep [选项] 基本正则表达式 [文件],其中基本正则表达式需要用引号引起来 引号引起来的作用:a.防止被误解为shell命令,b.可以用来查找多个单词组成的字符串 gre ...
- 【译】JWT(JSON Web Token) 入门指南
JWT 入门指南 原文地址:https://blog.angular-university.io/angular-jwt/ 这篇文章是两篇手把手教你如何在Angular应用(也适用于企业级应用)中实现 ...
- sql字段拆分 ,连表子查询获取值
1.连表子查询获取值 select bas.name,bas.id_card_num,bas.mobil_no,gender,bas.birthday,bas.height,bas.weight,pr ...
- 关于django的坑(一)
关于django orm 的坑: 关于设置数据库表自动更新 django的orm关于更新数据库的方法有update和save两种方法.想要表中自动更新需要一下几个条件: 使用 DateTimeFiel ...
- mysql数据库连接java
1 1.创建配置文件jdbc.properties 2 3 jdbc.driver=com.mysql.jdbc.Driver 4 jdbc.url=jdbc:mysql://localhost:33 ...
- MySQL性能分析show profiles详解
前言 前几篇文章我们讲了什么是 MySQL 索引,explain分析SQL语句是否用到索引,以及索引的优化等一系列的文章,今天我们来讲讲Show profiles,看看SQL耗时到底出现在哪个环节. ...
- 浅入kubernetes(2):Kubernetes 的组成
目录 说明 Kubernetes集群的组成 What are containerized applications? What are Kubernetes containers? What are ...
- Beta冲刺——第七天
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...
- Go从入门到放弃(笔记存档)
前言 考虑到印象笔记以后不续费了,这里转存到博客园一份 因内容是自己写的笔记, 未作任何润色, 所以看着很精简, 请见谅 查看官方文档 在新的go安装包中,为了减小体积默认去除了go doc 安装go ...