狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

引入SQLite-net ORM并封裝常用方法

admin
2024年8月21日 14:52 本文熱度 992

前言

上一章節(jié)我們搭建好了EasySQLite的前后端框架,今天我們的主要任務(wù)是在后端框架中引入SQLite-net ORM并封裝常用方法(SQLiteHelper)。

EasySQLite項目源碼地址

SQLite-net介紹

簡單、強大、跨平臺的 SQLite 客戶端和 .NET 的 ORM。

SQLite-net提供了以下四個包:

PackageDescriptionPackage Address
sqlite-net-pcl.NET Standard 庫https://www.nuget.org/packages/sqlite-net-pcl
sqlite-net-sqlcipher支持加密https://www.nuget.org/packages/sqlite-net-sqlcipher
sqlite-net-static使用平臺提供的 sqlite3 的 P/Invokes 的特殊版本https://www.nuget.org/packages/sqlite-net-static
sqlite-net-base使用 SQLitePCLRaw 捆綁包,以便您可以選擇自己的提供程序https://www.nuget.org/packages/sqlite-net-base

SQLite-net 設(shè)計目標(biāo)

SQLite-net 被設(shè)計為一個快速便捷的數(shù)據(jù)庫層。其設(shè)計遵循以下目標(biāo):

  • 非常容易與現(xiàn)有項目集成,并在所有 .NET 平臺上運行。
  • 對 SQLite 的薄包裝,快速高效。(這個庫不應(yīng)該成為查詢性能的瓶頸。)
  • 提供非常簡單的方法來安全執(zhí)行 CRUD 操作和查詢(使用參數(shù)),以及以強類型方式檢索這些查詢結(jié)果。
  • 在不強制更改類的情況下與數(shù)據(jù)模型一起工作。(包含一個小型的反射驅(qū)動 ORM 層。)

安裝 sqlite-net-pcl  Nuget包

搜索sqlite-net-pcl,選擇最新穩(wěn)定版本進(jìn)行安裝:

SQLite同步和異步方法幫助類

SQLiteHelper

    /// <summary>
    /// SQLite同步方法幫助類
    /// 作者:追逐時光者
    /// 創(chuàng)建時間:2023年11月30日
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class SQLiteHelper<T> where T : new()
    {
        private readonly string _databasePath = Path.Combine(Environment.CurrentDirectory, "ClassManagement.db");
        private readonly SQLiteConnection _connection; // SQLite連接對象

        /// <summary>
        /// 構(gòu)造函數(shù)
        /// </summary>
        public SQLiteHelper()
        {
            // 創(chuàng)建SQLite連接對象并打開連接
            _connection = new SQLiteConnection(_databasePath);
            _connection.CreateTable<T>(); // 如果表不存在,則創(chuàng)建該表[不會創(chuàng)建重復(fù)的表]
        }

        /// <summary>
        /// 數(shù)據(jù)插入
        /// </summary>
        /// <param name="item">要插入的數(shù)據(jù)項</param>
        /// <returns></returns>
        public int Insert(T item)
        {
            return _connection.Insert(item);
        }

        /// <summary>
        /// 數(shù)據(jù)刪除
        /// </summary>
        /// <param name="id">要刪除的數(shù)據(jù)的主鍵ID</param>
        /// <returns></returns>
        public int Delete(int id)
        {
            return _connection.Delete<T>(id);
        }

        /// <summary>
        /// 數(shù)據(jù)更新
        /// </summary>
        /// <param name="item">要更新的數(shù)據(jù)項</param>
        /// <returns></returns>
        public int Update(T item)
        {
            return _connection.Update(item);
        }

        /// <summary>
        /// 根據(jù)條件查詢記錄
        /// </summary>
        /// <param name="predExpr">查詢條件</param>
        /// <returns></returns>
        public List<T> Query(Expression<Func<T, bool>> predExpr)
        {
            return _connection.Table<T>().Where(predExpr).ToList();
        }

        /// <summary>
        /// 查詢所有數(shù)據(jù)
        /// </summary>
        /// <returns></returns>
        public List<T> QueryAll()
        {
            return _connection.Table<T>().ToList();
        }

        /// <summary>
        /// 根據(jù)條件查詢單條記錄
        /// </summary>
        /// <param name="predExpr">查詢條件</param>
        /// <returns></returns>
        public T QuerySingle(Expression<Func<T, bool>> predExpr)
        {
            return _connection.Table<T>().Where(predExpr).FirstOrDefault();
        }
    }

SQLiteAsyncHelper

    /// <summary>
    /// SQLite異步方法幫助類
    /// 作者:追逐時光者
    /// 創(chuàng)建時間:2023年11月30日
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class SQLiteAsyncHelper<T> where T : new()
    {
        private readonly string _databasePath = Path.Combine(Environment.CurrentDirectory, "ClassManagement.db");
        private readonly SQLiteAsyncConnection _connectionAsync; // SQLite連接對象

        /// <summary>
        /// 構(gòu)造函數(shù)
        /// </summary>
        public SQLiteAsyncHelper()
        {
            // 創(chuàng)建SQLite連接對象并打開連接
            _connectionAsync = new SQLiteAsyncConnection(_databasePath);
            _connectionAsync.CreateTableAsync<T>(); // 如果表不存在,則創(chuàng)建該表[不會創(chuàng)建重復(fù)的表]
        }

        /// <summary>
        /// 數(shù)據(jù)插入
        /// </summary>
        /// <param name="item">要插入的數(shù)據(jù)項</param>
        /// <returns></returns>
        public async Task<int> InsertAsync(T item)
        {
            return await _connectionAsync.InsertAsync(item);
        }

        /// <summary>
        /// 數(shù)據(jù)刪除
        /// </summary>
        /// <param name="id">要刪除的數(shù)據(jù)的主鍵ID</param>
        /// <returns></returns>
        public async Task<int> DeleteAsync(int id)
        {
            return await _connectionAsync.DeleteAsync<T>(id);
        }

        /// <summary>
        /// 數(shù)據(jù)更新
        /// </summary>
        /// <param name="item">要更新的數(shù)據(jù)項</param>
        /// <returns></returns>
        public async Task<int> UpdateAsync(T item)
        {
            return await _connectionAsync.UpdateAsync(item);
        }

        /// <summary>
        /// 根據(jù)條件查詢記錄
        /// </summary>
        /// <param name="predExpr">查詢條件</param>
        /// <returns></returns>
        public async Task<List<T>> QueryAsync(Expression<Func<T, bool>> predExpr)
        {
            return await _connectionAsync.Table<T>().Where(predExpr).ToListAsync();
        }

        /// <summary>
        /// 查詢所有數(shù)據(jù)
        /// </summary>
        /// <returns></returns>
        public async Task<List<T>> QueryAllAsync()
        {
            return await _connectionAsync.Table<T>().ToListAsync();
        }

        /// <summary>
        /// 根據(jù)條件查詢單條記錄
        /// </summary>
        /// <param name="predExpr">查詢條件</param>
        /// <returns></returns>
        public async Task<T> QuerySingleAsync(Expression<Func<T, bool>> predExpr)
        {
            return await _connectionAsync.Table<T>().Where(predExpr).FirstOrDefaultAsync();
        }
    }

參考資料

[1]

https://github.com/YSGStudyHards/EasySQLite


該文章在 2024/8/21 14:52:46 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved