.Net 轻量级 ORM 框架 Light.Data

MIT
C#
跨平台
2019-05-22
aquilahkj

Light.Data是一个轻量级的基于dotnet standard 2.0的ORM框架, 通过对实体模型类的Attribute或者配置文件进行配置与数据表的对应关系. 使用核心类DataContext对数据表进行CURD的操作.

PM> Install-Package Light.Data
支持数据库
数据库 说明
SqlServer 安装Light.Data.Mssql类库, 支持SqlServer 2008或以上
Mysql 安装Light.Data.Mysql类库, 支持Mysql 5.5或以上
Postgre 安装Light.Data.Postgre类库, 支持Postgre9.3或以上

基本操作

  • 基本CURD
  • 批量CUD
  • 支持事务处理
  • 支持数据字段默认值和自动时间戳
  • 支持数据字段读写控制
  • 查询结果指定类或匿名类输出
  • 查询直接插入数据表
var context = new DataContext();
// 查询单个数据
var item = context.Query<TeUser>().Where(x => x.Id == 10).First();
// 查询集合数据
var list = context.Query<TeUser>().Where(x => x.Id > 10).ToList();
// 新增数据
var user = new TeUser() {
    Account = "foo",
    Password = "bar"
};
context.Insert(user);
// 修改数据
user.Password = "bar1";
context.Update(user);
// 删除数据
context.Delete(user);

数据汇总

  • 单列数据直接汇总
  • 多列数据分组汇总
  • 格式化分组字段
  • 汇总数据直接插入数据表
// 普通汇总
var list = context.Query<TeUser> ()
                  .Where (x => x.Id >= 5)
                  .GroupBy (x => new LevelIdAgg () {
                      LevelId = x.LevelId,
                      Data = Function.Count ()
                   })
                  .ToList ();

// 日期格式化统计
var list = context.Query<TeUser> ()
                  .GroupBy (x => new RegDateFormatAgg () {
                      RegDateFormat = x.RegTime.ToString("yyyy-MM-dd"),
                      Data = Function.Count ()
                   })
                  .ToList ();    

连表查询

  • 多表连接, 支持内连接, 左连接和右连接
  • 支持查询结果和汇总数据连接
  • 连接查询结果指定类或匿名类输出
  • 连接查询结果直接插入数据表
// 内连接
var join = context.Query<TeUser> ()
                  .Join<TeUserExtend>((x,y) => x.Id == y.Id);

// 统计结果连接实体表             
var join = context.Query<TeMainTable>()
                  .GroupBy(x => new {
                      MId = x.MId,
                      Count = Function.Count(),
                   })
                  .Join<TeSubTable>((x, y) => x.MId == y.Id);

执行SQL语句

  • 直接使用SQL语句和存储过程
  • 支持对象参数
  • 查询结果指定类或匿名类输出
  • 存储过程支持output参数
// 普通参数
var sql = "update Te_User set NickName=@P2 where Id=@P1";
var ps = new DataParameter[2];
ps[0] = new DataParameter("P1", 5);
ps[1] = new DataParameter("P2", "abc");
var executor = context.CreateSqlStringExecutor(sql, ps);
var ret = executor.ExecuteNonQuery();

// 对象参数
var sql = "update Te_User set NickName={nickname} where Id={id}";
var executor = context.CreateSqlStringExecutor(sql, new { nickname = "abc", id = 5 });
var ret = executor.ExecuteNonQuery();

 

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

MicroPython的TPYBoard驱动LCD5110

MicroPython的TPYBoard驱动LCD5110, 先看一下LCD5110针脚含义吧(注意:LCD5110的针脚有些不一样的) TPYBoard的针脚与5110的针脚对应关系如下: TPYBoard LCD5110 memo —————————...

2016/08/03 14:43
71
0
光照示例

技巧如下: 在设置可变顶点格式时加入法线和漫反色,如下所示: // The 3D vertex format and descriptor typedef struct { float x, y, z; // 3D coordinates float nx, ny, nz; // normal...

2016/06/20 13:38
2
0
光照示例

技巧如下: 在设置可变顶点格式时加入法线和漫反色,如下所示: // The 3D vertex format and descriptor typedef struct { float x, y, z; // 3D coordinates float nx, ny, nz; // normal...

2016/06/20 13:39
1
0
光照示例

技巧如下: 在设置可变顶点格式时加入法线和漫反色,如下所示: // The 3D vertex format and descriptor typedef struct { float x, y, z; // 3D coordinates float nx, ny, nz; // normal...

2016/06/20 13:40
1
0
光照示例

技巧如下: 在设置可变顶点格式时加入法线和漫反色,如下所示: // The 3D vertex format and descriptor typedef struct { float x, y, z; // 3D coordinates float nx, ny, nz; // normal...

2016/06/20 13:38
2
0
Zeroc Ice 学习笔记--Docker 部署服务

Zeroc Ice 学习笔记--Docker 部署服务 1、Docker Ice images安装 docker pull zeroc/icegridregistry docker pull mycat/leader-icenode(包含JDK) 2、Ice Registry registry.conf 文件: Ic...

2016/09/19 15:24
292
0
[MicroPython]TPYBoard开发板STM32F407超声波测距

1.实验目的 1. 学习在PC机系统中扩展简单I/O 接口的方法。 2. 进一步学习编制数据输出程序的设计方法。 3. 学习超声波模块的测距原理。 4. 学习LCD5110接线方法 5. 学习 F407 Micropython开发...

2018/08/18 14:38
31
0
Micropython教程之TPYBoard DIY电子时钟(萝卜学科编程教育)

1.实验目的 1. 学习在PC机系统中扩展简单I/O?接口的方法。 2. 什么是SPI接口。 3. 学习TPYBoard I2C接口的用法。 4. 学习LCD5110接线方法。 5. 设定时钟并将当前时间显示在LCD5110上。 2.所需...

2018/12/04 10:35
76
0
Hubs & Repeaters

Introduction Here we will talk about hubs and explain how they work. In the next section we will move to switches and how they differ from hubs, how they work and the types of s...

2012/06/05 16:48
21
0
Micropython教程之TPYBoard DIY超声波测距仪实例演示

1.实验目的 1. 学习在PC机系统中扩展简单I/O?接口的方法。 2. 进一步学习编制数据输出程序的设计方法。 3. 学习超声波模块的测距原理。 4. 学习LCD5110接线方法 5. 学习TPYboard控制超声波模...

2018/12/05 09:19
84
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部