FreeSql (一)入門

FreeSql 是一個功能強大的對象關係映射程序(O/RM),支持 .NETCore 2.1+ 或 .NETFramework 4.5+(QQ羣:4336577)html

FreeSql採用MIT開源協議託管於 github。git

特性

  • [x] 支持 CodeFirst 遷移;
  • [x] 支持 DbFirst 從數據庫導入實體類,支持三種模板生成器;
  • [x] 採用 ExpressionTree 高性能讀取數據;
  • [x] 支持深刻的類型映射,好比pgsql的數組類型,堪稱匠心製做;
  • [x] 支持豐富的表達式函數;
  • [x] 支持導航屬性查詢,和延時加載;
  • [x] 支持同步/異步數據庫操做方法,豐富多彩的鏈式查詢方法;
  • [x] 支持讀寫分離、分表分庫,租戶設計;
  • [x] 支持多種數據庫,MySql/SqlServer/PostgreSQL/Oracle/Sqlite;

模型

使用模型執行數據訪問,模型由實體類表示數據庫表或視圖,用於查詢和保存數據。github

可從現有數據庫生成實體模型,FreeSql 提供 IDbFirst 接口實現生生成實體模型sql

或者手動建立模型,基於模型建立或修改數據庫,提供 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參數,以此條件判斷是否對比實體與數據庫結構之間的變化,達到自動遷移的目的。ide

查詢

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();

系列文章導航

相關文章
相關標籤/搜索