简介
Fast.Framework 是一款基于 .NET 6 封装的轻量级ORM框架,支持多种数据库(SQL Server、Oracle、MySQL、PostgreSQL、SQLite)。
优点
如何使用
1. 安装
NuGet搜索Fast.Framework并安装最新版本

2. 创建DbContext对象
DbContext是轻量级的,可以频繁创建,一个线程创建一个DbContext,不要跨线程使用。- private IDbContext GetDbContext()
- {
- IDbContext _db = new DbContext(new List<DbOptions>() {
- new DbOptions()
- {
- DbId = "1",
- DbType = DbType.MySQL,
- ProviderName = "MySqlConnector",
- FactoryName = "MySqlConnector.MySqlConnectorFactory,MySqlConnector",
- ConnectionStrings = "Data Source=localhost;Port=3306;User ID=root;Password=123456;Initial Catalog=fast_framework_test;Charset=utf8mb4;SslMode=none;Allow User Variables=True;connection timeout=600;"
- }
- });
- if (_printSql)
- {
- _db.Aop.DbLog = (sql, dp) =>
- {
- Console.WriteLine($"执行Sql:{sql}");
- if (dp != null)
- {
- foreach (var item in dp)
- {
- Console.WriteLine($"参数名称:{item.ParameterName} 参数值:{item.Value}");
- }
- }
- };
- }
- return _db;
- }
复制代码 实体类
实体类原生支持微软特性,兼容Entity Framework。- using System.ComponentModel.DataAnnotations;
- using System.ComponentModel.DataAnnotations.Schema;
- namespace Models
- {
- /// <summary>
- /// 用户表
- /// </summary>
- [Serializable]
- [Table("sys_user")]
- public partial class SysUser
- {
- /// <summary>
- /// 主键
- /// </summary>
- [Key]
- [Column("id")]
- public long Id { get; set; }
- /// <summary>
- /// 用户名
- /// </summary>
- [Column("user_name")]
- public string UserName { get; set; }
- /// <summary>
- /// 用户姓名
- /// </summary>
- [Column("real_name")]
- public string RealName { get; set; }
- /// <summary>
- /// 用户密码
- /// </summary>
- [Column("password")]
- public string Password { get; set; }
- /// <summary>
- /// 备注
- /// </summary>
- [Column("remark")]
- public string Remark { get; set; }
- /// <summary>
- /// 创建者ID
- /// </summary>
- [Column("create_userid")]
- public string CreateUserid { get; set; }
- /// <summary>
- /// 创建时间
- /// </summary>
- [Column("create_time")]
- public DateTime CreateTime { get; set; }
- /// <summary>
- /// 更新者ID
- /// </summary>
- [Column("update_userid")]
- public string UpdateUserid { get; set; }
- /// <summary>
- /// 更新时间
- /// </summary>
- [Column("update_time")]
- public DateTime? UpdateTime { get; set; }
- }
- }
复制代码 .NET 6 依赖注入FastDbContext
配置文件
- "DbConfig": [
- {
- "DbId": 1,
- "DbType": "MySQL",
- "IsDefault": true,
- "ProviderName": "MySqlConnector",
- "FactoryName": "MySqlConnector.MySqlConnectorFactory,MySqlConnector",
- "ConnectionStrings": "Data Source=localhost;Port=3306;User ID=root;Password=123456;Initial Catalog=fast_framework_test;Charset=utf8mb4;SslMode=none;Allow User Variables=True;connection timeout=600;"
- }
- ]
复制代码 注入代码
- //注入FastDbContext
- builder.Services.Configure<List<DbOptions>>(builder.Configuration.GetSection("DbConfig"));
- builder.Services.AddFastDbContext();
复制代码 循环插入
- await db.Ado.BeginTranAsync();
- foreach (SysUser user in userList)
- {
- await db.Insert(user).ExceuteAsync();
- }
- await db.Ado.CommitTranAsync();
复制代码 批量插入
- await GetDbContext().Insert(userList).ExceuteAsync();
复制代码 循环修改
- await db.Ado.BeginTranAsync();
- foreach (SysUser user in userList)
- {
- await db.Update(user).ExceuteAsync();
- }
- await db.Ado.CommitTranAsync();
复制代码 批量修改
- await GetDbContext().Update(userList).ExceuteAsync();
复制代码 条件查询
- Pagination pagination = new Pagination();
- pagination.Page = 10;
- pagination.PageSize = 200;
- var list = await _db.Query<SysUser>()
- .Where(t => t.Id > 20 && t.RealName.Contains("测试"))
- .OrderBy(t => t.CreateTime, "desc")
- .OrderBy(t => t.Id).ToPageListAsync(pagination);
复制代码 分组聚合统计查询
这个写法很优雅。- var list = await db.Query<BsOrderDetail>()
- .LeftJoin<BsOrder>((d, o) => o.Id == d.OrderId)
- .GroupBy((d, o) => new { o.Id, o.OrderTime, o.Remark })
- .Having((d, o) => SqlFunc.Sum(d.Quantity * d.Price) > 1000)
- .Select((d, o) => new
- {
- o.Id,
- o.OrderTime,
- o.Remark,
- Amount = SqlFunc.Sum(d.Quantity * d.Price)
- }).ToListAsync();
复制代码 性能测试
性能测试使用Winform测试
与其它ORM的对比请参考《ORM增删改查并发性能测试2》
常规测试

并发查询

并发插入

结论
感觉还是非常快的,性能非常优异。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |