FreeSql 是一个功能强大的对象关系映射程序(O/RM),支持 .NETCore 2.1+ 或 .NETFramework
4.5+(QQ群:4336577)

FreeSql采用MIT开源协议托管于 github。

特性

* [x] 支持 CodeFirst 迁移;
* [x] 支持 DbFirst 从数据库导入实体类,支持三种模板生成器;
* [x] 采用 ExpressionTree 高性能读取数据;
* [x] 支持深入的类型映射,比如pgsql的数组类型,堪称匠心制作;
* [x] 支持丰富的表达式函数;
* [x] 支持导航属性查询,和延时加载;
* [x] 支持同步/异步数据库操作方法,丰富多彩的链式查询方法;
* [x] 支持读写分离、分表分库,租户设计;
* [x] 支持多种数据库,MySql/SqlServer/PostgreSQL/Oracle/Sqlite;
模型

使用模型执行数据访问,模型由实体类表示数据库表或视图,用于查询和保存数据。

可从现有数据库生成实体模型,FreeSql 提供 IDbFirst 接口实现生生成实体模型
<https://github.com/2881099/FreeSql.Tools>。

或者手动创建模型,基于模型创建或修改数据库,提供 ICodeFirst 同步结构的 API(甚至可以做到开发阶段自动同步)。
using FreeSql.DataAnnotations; using System; public class Blog {
[Column(IsIdentity = true, IsPrimary = true)] public int BlogId { get; set; }
public string Url { get; set; } public int Rating { get; set; } }
声明

dotnet add packages FreeSql.Provider.Sqlite
var connstr = @"Data
Source=|DataDirectory|\db1.db;Attachs=db2.db;Pooling=true;Max Pool Size=10";
IFreeSql fsql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.Sqlite, connstr)
.UseAutoSyncStructure(true) //自动同步实体结构到数据库 .Build();
注意: IFreeSql 在项目中应以单例声明,而不是在每次使用的时候创建。

迁移

程序运行中FreeSql会检查AutoSyncStructure参数,以此条件判断是否对比实体与数据库结构之间的变化,达到自动迁移的目的。

查询
var blogs = fsql.Select<Blog>() .Where(b => b.Rating > 3) .OrderBy(b => b.Url)
.Skip(100) .Limit(10) //第100行-110行的记录 .ToList();
插入
var blog = new Blog { Url = "http://sample.com" }; blog.BlogId =
(int)fsql.Insert<Blog>() .AppendData(blog) .ExecuteIdentity();
更新
fsql.Update<Blog>() .Set(b => b.Url, "http://sample2222.com") .Where(b =>
b.Url == "http://sample.com") .ExecuteAffrows();
删除
fsql.Delete<Blog>() .Where(b => b.Url == "http://sample.com")
.ExecuteAffrows();
系列文章导航

*
(一)入门

*
(二)自动迁移实体 <https://www.cnblogs.com/FreeSql/p/11531301.html>

*
(三)实体特性 <https://www.cnblogs.com/FreeSql/p/11531302.html>

*
(四)实体特性 Fluent Api <https://www.cnblogs.com/FreeSql/p/11531304.html>

*
(五)插入数据 <https://www.cnblogs.com/FreeSql/p/11531306.html>

*
(六)批量插入数据 <https://www.cnblogs.com/FreeSql/p/11531309.html>

*
(七)插入数据时忽略列 <https://www.cnblogs.com/FreeSql/p/11531316.html>

*
(八)插入数据时指定列 <https://www.cnblogs.com/FreeSql/p/11531318.html>

*
(九)删除数据 <https://www.cnblogs.com/FreeSql/p/11531320.html>

*
(十)更新数据 <https://www.cnblogs.com/FreeSql/p/11531321.html>

*
(十一)更新数据 Where <https://www.cnblogs.com/FreeSql/p/11531324.html>

*
(十二)更新数据时指定列 <https://www.cnblogs.com/FreeSql/p/11531327.html>

*
(十三)更新数据时忽略列 <https://www.cnblogs.com/FreeSql/p/11531334.html>

*
(十四)批量更新数据 <https://www.cnblogs.com/FreeSql/p/11531335.html>

*
(十五)查询数据 <https://www.cnblogs.com/FreeSql/p/11531339.html>

*
(十六)分页查询 <https://www.cnblogs.com/FreeSql/p/11531341.html>

*
(十七)联表查询 <https://www.cnblogs.com/FreeSql/p/11531346.html>

*
(十八)导航属性 <https://www.cnblogs.com/FreeSql/p/11531352.html>

*
(十九)多表查询 <https://www.cnblogs.com/FreeSql/p/11531362.html>

*
(二十)多表查询 WhereCascade <https://www.cnblogs.com/FreeSql/p/11531372.html>

*
(二十一)查询返回数据 <https://www.cnblogs.com/FreeSql/p/11531376.html>

*
(二十二)Dto 映射查询 <https://www.cnblogs.com/FreeSql/p/11531381.html>

*
(二十三)分组、聚合 <https://www.cnblogs.com/FreeSql/p/11531384.html>

*
(二十四)Linq To Sql 语法使用介绍 <https://www.cnblogs.com/FreeSql/p/11531392.html>

*
(二十五)延时加载 <https://www.cnblogs.com/FreeSql/p/11531395.html>

*
(二十六)贪婪加载 Include、IncludeMany、Dto、ToList
<https://www.cnblogs.com/FreeSql/p/11531404.html>

*
(二十七)将已写好的 SQL 语句,与实体类映射进行二次查询
<https://www.cnblogs.com/FreeSql/p/11531416.html>

*
(二十八)事务 <https://www.cnblogs.com/FreeSql/p/11531423.html>

*
(二十九)Lambda 表达式 <https://www.cnblogs.com/FreeSql/p/11531425.html>

*
(三十)读写分离 <https://www.cnblogs.com/FreeSql/p/11531430.html>

*
(三十一)分区分表 <https://www.cnblogs.com/FreeSql/p/11531435.html>

*
(三十二)Aop <https://www.cnblogs.com/FreeSql/p/11531471.html>

*
(三十三)CodeFirst 类型映射 <https://www.cnblogs.com/FreeSql/p/11531543.html>

*
(三十四)CodeFirst 迁移说明 <https://www.cnblogs.com/FreeSql/p/11531550.html>

*
(三十五)CodeFirst 自定义特性 <https://www.cnblogs.com/FreeSql/p/11531576.html>