Bitter.Core系列三:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 之 示例模型创建
2024-08-31 02:02:54
在具体数据库操作之前,我们先准备好四张表以及相对应数据库操作模型: 学生表,年级表,班级表,学分表。示例数据库表,如下代码(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; } }
最新文章
- C语言学习 第四次作业总结
- 16-网易-intership
- Oracel查询根据部分字段去重复
- HDU5402 暴力模拟
- 自己用C语言写dsPIC / PIC24 serial bootloader
- [每日菜单]lunch menu for Wednesday, February 24 2016
- construction of tuples containing 0 or 1 items
- Android应用开发--MP3音乐播放器代码实现(一)
- 拿nodejs快速搭建简单Oauth认证和restful API server攻略
- Ext.form.ComboBox 后台取值 动态加载 ext5.0.0
- KMP入门题目[不定期更新]
- Struts2输入校验
- HTML5 离线缓存忽略主页实例
- Qt之开机自启动
- Vue公司项目实战步骤
- EF ++属性会更新实体
- suse下修改主机名
- javascript 面向对象之路.2 - 小蜜蜂
- python删除文件与目录的方法
- Delphi调用JAVA的WebService上传XML文件(XE10.2+WIN764)
热门文章
- [UWP] - 用Json格式来发送一个Post请求到WCF服务
- python序列(二)列表的删除操作
- 6.自定义view-侧边字母导航LetterNavigationBar
- oracle 19c dataguard silent install (oracle 19c dataguard 静默安装)
- 使用freetype来显示中文汉字和英文字符
- Mysql 实战关于date,datetime,timestamp类型使用
- 第八章节 BJROBOT hector 算法构建地图【ROS全开源阿克曼转向智能网联无人驾驶车】
- 辅助调用函数【call,apply,bind】
- String、StringBuffer 和 StringBuilder 的区别
- Linux设置系统时区