FreeSql 是一個(gè)功能強(qiáng)大的對(duì)象關(guān)系映射程序(O/RM),支持 .NETCore 2.1+ 或 .NETFramework
4.5+(QQ群:4336577)
FreeSql采用MIT開源協(xié)議托管于 github。
特性
* [x] 支持 CodeFirst 遷移;
* [x] 支持 DbFirst 從數(shù)據(jù)庫導(dǎo)入實(shí)體類,支持三種模板生成器;
* [x] 采用 ExpressionTree 高性能讀取數(shù)據(jù);
* [x] 支持深入的類型映射,比如pgsql的數(shù)組類型,堪稱匠心制作;
* [x] 支持豐富的表達(dá)式函數(shù);
* [x] 支持導(dǎo)航屬性查詢,和延時(shí)加載;
* [x] 支持同步/異步數(shù)據(jù)庫操作方法,豐富多彩的鏈?zhǔn)讲樵兎椒ǎ?
* [x] 支持讀寫分離、分表分庫,租戶設(shè)計(jì);
* [x] 支持多種數(shù)據(jù)庫,MySql/SqlServer/PostgreSQL/Oracle/Sqlite;
模型
使用模型執(zhí)行數(shù)據(jù)訪問,模型由實(shí)體類表示數(shù)據(jù)庫表或視圖,用于查詢和保存數(shù)據(jù)。
可從現(xiàn)有數(shù)據(jù)庫生成實(shí)體模型,F(xiàn)reeSql 提供 IDbFirst 接口實(shí)現(xiàn)生生成實(shí)體模型
<https://github.com/2881099/FreeSql.Tools>。
或者手動(dòng)創(chuàng)建模型,基于模型創(chuàng)建或修改數(shù)據(jù)庫,提供 ICodeFirst 同步結(jié)構(gòu)的 API(甚至可以做到開發(fā)階段自動(dòng)同步)。
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) //自動(dòng)同步實(shí)體結(jié)構(gòu)到數(shù)據(jù)庫 .Build();
注意: IFreeSql 在項(xiàng)目中應(yīng)以單例聲明,而不是在每次使用的時(shí)候創(chuàng)建。
遷移
程序運(yùn)行中FreeSql會(huì)檢查AutoSyncStructure參數(shù),以此條件判斷是否對(duì)比實(shí)體與數(shù)據(jù)庫結(jié)構(gòu)之間的變化,達(dá)到自動(dòng)遷移的目的。
查詢
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();
系列文章導(dǎo)航
*
(一)入門
*
(二)自動(dòng)遷移實(shí)體 <https://www.cnblogs.com/FreeSql/p/11531301.html>
*
(三)實(shí)體特性 <https://www.cnblogs.com/FreeSql/p/11531302.html>
*
(四)實(shí)體特性 Fluent Api <https://www.cnblogs.com/FreeSql/p/11531304.html>
*
(五)插入數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531306.html>
*
(六)批量插入數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531309.html>
*
(七)插入數(shù)據(jù)時(shí)忽略列 <https://www.cnblogs.com/FreeSql/p/11531316.html>
*
(八)插入數(shù)據(jù)時(shí)指定列 <https://www.cnblogs.com/FreeSql/p/11531318.html>
*
(九)刪除數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531320.html>
*
(十)更新數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531321.html>
*
(十一)更新數(shù)據(jù) Where <https://www.cnblogs.com/FreeSql/p/11531324.html>
*
(十二)更新數(shù)據(jù)時(shí)指定列 <https://www.cnblogs.com/FreeSql/p/11531327.html>
*
(十三)更新數(shù)據(jù)時(shí)忽略列 <https://www.cnblogs.com/FreeSql/p/11531334.html>
*
(十四)批量更新數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531335.html>
*
(十五)查詢數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531339.html>
*
(十六)分頁查詢 <https://www.cnblogs.com/FreeSql/p/11531341.html>
*
(十七)聯(lián)表查詢 <https://www.cnblogs.com/FreeSql/p/11531346.html>
*
(十八)導(dǎo)航屬性 <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>
*
(二十一)查詢返回?cái)?shù)據(jù) <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>
*
(二十五)延時(shí)加載 <https://www.cnblogs.com/FreeSql/p/11531395.html>
*
(二十六)貪婪加載 Include、IncludeMany、Dto、ToList
<https://www.cnblogs.com/FreeSql/p/11531404.html>
*
(二十七)將已寫好的 SQL 語句,與實(shí)體類映射進(jìn)行二次查詢
<https://www.cnblogs.com/FreeSql/p/11531416.html>
*
(二十八)事務(wù) <https://www.cnblogs.com/FreeSql/p/11531423.html>
*
(二十九)Lambda 表達(dá)式 <https://www.cnblogs.com/FreeSql/p/11531425.html>
*
(三十)讀寫分離 <https://www.cnblogs.com/FreeSql/p/11531430.html>
*
(三十一)分區(qū)分表 <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>
熱門工具 換一換