1. 程式人生 > >C# 資料操作系列 - 19 FreeSql 入坑介紹

C# 資料操作系列 - 19 FreeSql 入坑介紹

# 0. 前言 > 前幾天FreeSql的作者向我推薦了FreeSql框架,想讓我幫忙寫個文章介紹一下。嗯,想不到我也能帶個貨了。哈哈,開個玩笑~看了下覺得設計的挺有意思的,所以就謝了這篇文章。 簡單介紹一下,FreeSql 是NCC組織的沙盒級專案,是一款功能強大的 ORM 元件,支援 .NET Core、.NET Framework 和 Xamarin。目前 FreeSql 支援以下資料庫:MySQL、PostgreSQL、SqlServer、Oracle、Sqlite、Odbc、微軟 Access 以及國產資料庫達夢。 也就是說也是一個由國內優秀開發者維護的優秀專案,初步看了下功能很齊全。小夥伴們有時間可以取瞅瞅。下圖是我從它GitHub倉庫裡複製過來的。可以看見支援的功能還是相當多的。 ![img](https://img2020.cnblogs.com/other/1266612/202005/1266612-20200529114532217-2099337004.png) > 關於NCC社群,是.net core的一個開源社群,也是國內最大的.net core開源社群 # 1. 初步使用 照例,沒安裝就沒有呼叫。所以,在建立專案之後,安裝一下吧: ```bash dotnet add package FreeSql ``` 然後建立一個IFreeSql物件: ```c# public class FreeSqlContext { public static IFreeSql FreeSqlConnect { get; } = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=document.db") .UseAutoSyncStructure(true) //自動同步實體結構到資料庫 .Build(); } ``` 因為官方要求將IFreeSql物件宣告為單例模式,所以我在這裡使用了靜態屬性。 > 這種寫法是C#的一種語法糖,只有get表示該屬性是一個只能讀的屬性(與只讀屬性有個微妙的差距),等號後面表示該屬性第一次賦值的內容。 建立一個普通的Model類: ```c# public class Model { public int Id { get; set; } public int StringLength { get; set; } public string Name { get; set; } } ``` ## 1.1 簡單插入 然後試一下插入資料: ```c# var row = FreeSqlContext.FreeSqlConnect.Insert(new Model { Name = "測試", StringLength = 10 }).ExecuteAffrows(); ``` ![image-20200528103357431](https://img2020.cnblogs.com/other/1266612/202005/1266612-20200529114532487-882993465.png) 提示如圖內容,需要我們手動安裝一下FreeSql的SQLite驅動,安裝之後: ```bash dotnet add packages FreeSql.Provider.Sqlite ``` FreeSql針對各種受支援的資料庫都單獨開發了驅動包,統一命名為: ```c# FreeSql.Provider.<資料庫型別> ``` 安裝完成後,重新執行後順利完成執行,順便幫你把資料庫也生成好了(這一點我感覺挺好的),同時生成了一個主鍵為Id的Model表: ```sql create table Model ( Id INTEGER primary key, StringLength INTEGER not null, Name NVARCHAR(255) ); ``` ## 1.2 簡單查詢 接下來簡單的查詢一下剛剛插入的資料: ```c# var list = FreeSqlContext.FreeSqlConnect.Queryable