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 接口實現生生成實體模型。
或者手動創建模型,基于模型創建或修改數據庫,提供 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();
系列文章導航
(一)入門
(二)自動遷移實體
(三)實體特性
(四)實體特性 Fluent Api
(五)插入數據
(六)批量插入數據
(七)插入數據時忽略列
(八)插入數據時指定列
(九)刪除數據
(十)更新數據
(十一)更新數據 Where
(十二)更新數據時指定列
(十三)更新數據時忽略列
(十四)批量更新數據
(十五)查詢數據
(十六)分頁查詢
(十七)聯表查詢
(十八)導航屬性
(十九)多表查詢
(二十)多表查詢 WhereCascade
(二十一)查詢返回數據
(二十二)Dto 映射查詢
(二十三)分組、聚合
(二十四)Linq To Sql 語法使用介紹
(二十五)延時加載
(二十六)貪婪加載 Include、IncludeMany、Dto、ToList
(二十七)將已寫好的 SQL 語句,與實體類映射進行二次查詢
(二十八)事務
(二十九)Lambda 表達式
(三十)讀寫分離
(三十一)分區分表
(三十二)Aop
(三十三)CodeFirst 類型映射
(三十四)CodeFirst 遷移說明
(三十五)CodeFirst 自定義特性