FreeSql (一)入門


FreeSql是一個功能強大的 .NET ORM 功能庫,支持 .NetFramework 4.0+、.NetCore 2.1+、Xamarin 等支持 NetStandard 所有運行平台。

QQ群:4336577(已滿)、8578575(在線)

模型

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

可從現有數據庫生成實體模型,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

static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
    .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=|DataDirectory|\db1.db")
    .UseAutoSyncStructure(true) //自動同步實體結構到數據庫
    .Build(); //請務必定義成 Singleton 單例模式

注意: 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();

FreeSqlBuilder

方法 返回值 說明
UseConnectionString this 設置連接串
UseSlave this 設置從數據庫,支持多個
UseConnectionFactory this 設置自定義數據庫連接對象(放棄內置對象連接池技術)
UseAutoSyncStructure this 【開發環境必備】自動同步實體結構到數據庫,程序運行中檢查實體創建或修改表結構
UseNoneCommandParameter this 不使用命令參數化執行,針對 Insert/Update,也可臨時使用 IInsert/IUpdate.NoneParameter()
UseGenerateCommandParameterWithLambda this 生成命令參數化執行,針對 lambda 表達式解析
UseLazyLoading this 開啟延時加載功能
UseMonitorCommand this 監視全局 SQL 執行前后
UseNameConvert this 自動轉換實體、屬性名稱 Entity Property -> Db Filed
UseExitAutoDisposePool this 監聽 AppDomain.CurrentDomain.ProcessExit/Console.CancelKeyPress 事件自動釋放連接池 (默認true)
Build<T> IFreeSql<T> 創建一個 IFreeSql 對象,注意:單例設計,不要重復創建

ConnectionStrings

DataType.MySql

Data Source=127.0.0.1;Port=3306;User ID=root;Password=root; Initial Catalog=cccddd;Charset=utf8; SslMode=none;Min pool size=1

DataType.PostgreSQL

Host=192.168.164.10;Port=5432;Username=postgres;Password=123456; Database=tedb;Pooling=true;Minimum Pool Size=1

DataType.SqlServer

Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Min Pool Size=1

DataType.Oracle

user id=user1;password=123456; data source=//127.0.0.1:1521/XE;Pooling=true;Min Pool Size=1

DataType.Sqlite

Data Source=|DataDirectory|\document.db; Attachs=xxxtb.db; Pooling=true;Min Pool Size=1

DataType.MsAccess

Provider=Microsoft.Jet.OleDb.4.0;Data Source=d:/accdb/2003.mdb;max pool size=5

DataType.Dameng(達夢)

server=127.0.0.1;port=5236;user id=2user;password=123456789;database=2user;poolsize=5

DataType.ShenTong(神通)

HOST=192.168.164.10;PORT=2003;DATABASE=OSRDB;USERNAME=SYSDBA;PASSWORD=szoscar55;MAXPOOLSIZE=2

DataType.OdbcMySql

Driver={MySQL ODBC 8.0 Unicode Driver}; Server=127.0.0.1;Persist Security Info=False; Trusted_Connection=Yes;UID=root;PWD=root; DATABASE=cccddd_odbc;Charset=utf8; SslMode=none;Min Pool Size=1

DataType.OdbcSqlServer

Driver={SQL Server};Server=.;Persist Security Info=False; Trusted_Connection=Yes;Integrated Security=True; DATABASE=freesqlTest_odbc; Pooling=true;Min Pool Size=1

DataType.OdbcOracle

Driver={Oracle in XE};Server=//127.0.0.1:1521/XE; Persist Security Info=False; Trusted_Connection=Yes;UID=odbc1;PWD=123456; Min Pool Size=1

DataType.OdbcPostgreSQL

Driver={PostgreSQL Unicode(x64)};Server=192.168.164.10; Port=5432;UID=postgres;PWD=123456; Database=tedb_odbc;Pooling=true;Min Pool Size=1

DataType.OdbcDameng (達夢)

Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236; Persist Security Info=False; Trusted_Connection=Yes; UID=USER1;PWD=123456789

DataType.OdbcKingbaseES (人大金倉)

Driver={KingbaseES 8.2 ODBC Driver ANSI};Server=127.0.0.1;Port=54321;UID=USER2;PWD=123456789;database=TEST

DataType.Odbc

Driver={SQL Server};Server=.;Persist Security Info=False; Trusted_Connection=Yes;Integrated Security=True; DATABASE=freesqlTest_odbc; Pooling=true;Min pool size=1

Packages

Package Name Version 說明
FreeSql.Repository NETStandard2.0、net45、net40 通用倉儲 + UnitOfWork 實現
FreeSql.DbContext NETStandard2.0、net45、net40 EFCore 的使用風格實現
FreeSql.Provider.MySql NETStandard2.0、net45、net40 基於 MySql.Data(Oracle官方)
FreeSql.Provider.MySqlConnector NETStandard2.0、net45 基於 MySqlConnector
FreeSql.Provider.PostgreSQL NETStandard2.0、net45 基於 PostgreSQL 9.5+
FreeSql.Provider.SqlServer NETStandard2.0、net45、net40 基於 SqlServer 2005+
FreeSql.Provider.SqlServerForSystem NETStandard2.0、net45、net40 基於 System.Data.SqlClient + SqlServer 2005+
FreeSql.Provider.Sqlite NETStandard2.0、net45、net40
FreeSql.Provider.Oracle NETStandard2.0、net45、net40
FreeSql.Provider.MsAccess NETStandard2.0、net45、net40
FreeSql.Provider.Dameng NETStandard2.0、net45、net40 基於 達夢數據庫
FreeSql.Provider.ShenTong NETStandard2.0、net45、net40 基於 神州通用數據庫
FreeSql.Provider.Odbc NETStandard2.0、net45、net40 基於 ODBC
FreeSql.Extensions.LazyLoading NETStandard2.0、net45、net40 延時屬性擴展包
FreeSql.Extensions.JsonMap NETStandard2.0、net45、net40 Json 序列化擴展包
FreeSql.Extensions.Linq NETStandard2.0、net45、net40 LinqToSql IQueryable 擴展包
FreeSql.Extensions.BaseEntity NETStandard2.0
FreeSql.Extensions.Generator NETCoreapp3.1 從數據庫生成實體類

系列文章導航


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM