FreeSql (一)入门
FreeSql 是一個功能強(qiáng)大的對象關(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)航屬性查詢,和延時加載;
- [x] 支持同步/異步數(shù)據(jù)庫操作方法,豐富多彩的鏈?zhǔn)讲樵兎椒?#xff1b;
- [x] 支持讀寫分離、分表分庫,租戶設(shè)計(jì);
- [x] 支持多種數(shù)據(jù)庫,MySql/SqlServer/PostgreSQL/Oracle/Sqlite;
模型
使用模型執(zhí)行數(shù)據(jù)訪問,模型由實(shí)體類表示數(shù)據(jù)庫表或視圖,用于查詢和保存數(shù)據(jù)。
可從現(xiàn)有數(shù)據(jù)庫生成實(shí)體模型,FreeSql 提供 IDbFirst 接口實(shí)現(xiàn)生生成實(shí)體模型。
或者手動創(chuàng)建模型,基于模型創(chuàng)建或修改數(shù)據(jù)庫,提供 ICodeFirst 同步結(jié)構(gòu)的 API(甚至可以做到開發(fā)階段自動同步)。
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) //自動同步實(shí)體結(jié)構(gòu)到數(shù)據(jù)庫.Build();注意: IFreeSql 在項(xiàng)目中應(yīng)以單例聲明,而不是在每次使用的時候創(chuàng)建。
遷移
程序運(yùn)行中FreeSql會檢查AutoSyncStructure參數(shù),以此條件判斷是否對比實(shí)體與數(shù)據(jù)庫結(jié)構(gòu)之間的變化,達(dá)到自動遷移的目的。
查詢
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)航
(一)入門
(二)自動遷移實(shí)體
(三)實(shí)體特性
(四)實(shí)體特性 Fluent Api
(五)插入數(shù)據(jù)
(六)批量插入數(shù)據(jù)
(七)插入數(shù)據(jù)時忽略列
(八)插入數(shù)據(jù)時指定列
(九)刪除數(shù)據(jù)
(十)更新數(shù)據(jù)
(十一)更新數(shù)據(jù) Where
(十二)更新數(shù)據(jù)時指定列
(十三)更新數(shù)據(jù)時忽略列
(十四)批量更新數(shù)據(jù)
(十五)查詢數(shù)據(jù)
(十六)分頁查詢
(十七)聯(lián)表查詢
(十八)導(dǎo)航屬性
(十九)多表查詢
(二十)多表查詢 WhereCascade
(二十一)查詢返回?cái)?shù)據(jù)
(二十二)Dto 映射查詢
(二十三)分組、聚合
(二十四)Linq To Sql 語法使用介紹
(二十五)延時加載
(二十六)貪婪加載 Include、IncludeMany、Dto、ToList
(二十七)將已寫好的 SQL 語句,與實(shí)體類映射進(jìn)行二次查詢
(二十八)事務(wù)
(二十九)Lambda 表達(dá)式
(三十)讀寫分離
(三十一)分區(qū)分表
(三十二)Aop
(三十三)CodeFirst 類型映射
(三十四)CodeFirst 遷移說明
(三十五)CodeFirst 自定義特性
轉(zhuǎn)載于:https://www.cnblogs.com/FreeSql/p/11531300.html
總結(jié)
以上是生活随笔為你收集整理的FreeSql (一)入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2013暑期规划
- 下一篇: 不作35岁的程序员?