Light.Data - .Net 轻量级 ORM 框架


MIT
跨平台
C#

软件简介

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或以上

[基本操作](https://aquilahkj.github.io/Light.Data.Site/#/zh-

cn/?id=%e5%9f%ba%e6%9c%ac%e6%93%8d%e4%bd%9c)

  • 基本CURD
  • 批量CUD
  • 支持事务处理
  • 支持数据字段默认值和自动时间戳
  • 支持数据字段读写控制
  • 查询结果指定类或匿名类输出
  • 查询直接插入数据表

    var context = new DataContext();
    // 查询单个数据
    var item = context.Query().Where(x => x.Id == 10).First();
    // 查询集合数据
    var list = context.Query().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);

[数据汇总](https://aquilahkj.github.io/Light.Data.Site/#/zh-

cn/?id=%e6%95%b0%e6%8d%ae%e6%b1%87%e6%80%bb)

  • 单列数据直接汇总
  • 多列数据分组汇总
  • 格式化分组字段
  • 汇总数据直接插入数据表

    // 普通汇总
    var list = context.Query ()
    .Where (x => x.Id >= 5)
    .GroupBy (x => new LevelIdAgg () {
    LevelId = x.LevelId,
    Data = Function.Count ()
    })
    .ToList ();

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

[连表查询](https://aquilahkj.github.io/Light.Data.Site/#/zh-

cn/?id=%e8%bf%9e%e8%a1%a8%e6%9f%a5%e8%af%a2)

  • 多表连接, 支持内连接, 左连接和右连接
  • 支持查询结果和汇总数据连接
  • 连接查询结果指定类或匿名类输出
  • 连接查询结果直接插入数据表

    // 内连接
    var join = context.Query ()
    .Join((x,y) => x.Id == y.Id);

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

[执行SQL语句](https://aquilahkj.github.io/Light.Data.Site/#/zh-

cn/?id=%e6%89%a7%e8%a1%8csql%e8%af%ad%e5%8f%a5)

  • 直接使用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();