国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C# ORM模式之 SqlSugar使用

這篇具有很好參考價(jià)值的文章主要介紹了C# ORM模式之 SqlSugar使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、SqlSugar介紹及分析

SqlSugar是一款 老牌 .NET 開源ORM框架,連接DB特別方便

支持?jǐn)?shù)據(jù)庫:MySql、SqlServer、Sqlite、Oracle 、 postgresql、達(dá)夢、人大金倉

官方文檔:http://www.donet5.com/Home/Doc

SqlSugar的優(yōu)點(diǎn):

1、高性能:不夸張的說,去掉Sql在數(shù)據(jù)庫執(zhí)行的時(shí)間,SqlSugar是EF數(shù)倍性能,另外在批量操作和一對多查詢上也有不錯的SQL優(yōu)化;

2、高擴(kuò)展性 :支持自定義拉姆達(dá)函數(shù)解析、擴(kuò)展數(shù)據(jù)類型、支持自定義實(shí)體特性,外部緩存等;

3、穩(wěn)定性和技術(shù)支持:? 雖然不是官方ORM, 但在穩(wěn)定性上也是有著數(shù)年用戶積累,如果遇到問題可以在GITHUB提出來,會根據(jù)緊急度定期解決;

4、功能全面:雖然SqlSugar小巧可功能并不遜色于EF框架

5、創(chuàng)新、持續(xù)更新 ,向下兼容

二、SqlSugar項(xiàng)目中的使用

1、包的引用:

C# ORM模式之 SqlSugar使用

?2、全局引用:

C# ORM模式之 SqlSugar使用

3、接口中常用方法封裝

1)、ISqlSugarRepository接口封裝

public interface ISqlSugarRepository<TEntity> : IBaseRepository where TEntity : class
{
    /// <summary>
    /// 
    /// </summary>
    ISqlSugarClient Db { get; }

    /// <summary>
    /// 執(zhí)行查詢SQL語句
    /// 只支持查詢操作,并且支持拉姆達(dá)分頁
    /// </summary>
    /// <param name="sql"></param>
    /// <returns></returns>
    Task<List<TEntity>> ExecuteSql(string sql);

    /// <summary>
    /// 通過Ado方法執(zhí)行SQL語句
    /// 支持任何SQL語句
    /// </summary>
    /// <param name="sql"></param>
    /// <param name="whereObj"></param>
    /// <returns></returns>
    Task<List<TEntity>> ExecuteAllSql(string sql, object whereObj = null);

    /// <summary>
    /// 插入實(shí)體
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    Task<int> Add(TEntity model);

    /// <summary>
    /// 批量插入實(shí)體
    /// </summary>
    /// <param name="listEntity"></param>
    /// <returns></returns>
    Task<int> Add(List<TEntity> listEntity);

    /// <summary>
    /// 根據(jù)實(shí)體刪除數(shù)據(jù)
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    Task<bool> Delete(TEntity model);

    /// <summary>
    /// 根據(jù)實(shí)體集合批量刪除數(shù)據(jù)
    /// </summary>
    /// <param name="models"></param>
    /// <returns></returns>
    Task<bool> Delete(List<TEntity> models);

    /// <summary>
    /// 根據(jù)ID刪除數(shù)據(jù)
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<bool> DeleteById(object id);

    /// <summary>
    /// 根據(jù)IDs批量刪除數(shù)據(jù)
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    Task<bool> DeleteByIds(List<object> ids);

    /// <summary>
    /// 更新實(shí)體
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    Task<bool> Update(TEntity model);

    /// <summary>
    /// 批量更新實(shí)體
    /// </summary>
    /// <param name="listEntity"></param>
    /// <returns></returns>
    Task<int> Update(List<TEntity> listEntity);

    /// <summary>
    /// 根據(jù)ID查詢一條數(shù)據(jù)
    /// </summary>
    /// <param name="objId"></param>
    /// <returns></returns>
    Task<TEntity> GetById(object objId);

    /// <summary>
    /// 根據(jù)條件查詢數(shù)據(jù)是否存在
    /// </summary>
    /// <param name="whereExpression"></param>
    /// <returns></returns>
    Task<bool> GetAnyByFilter(Expression<Func<TEntity, bool>> whereExpression);

    /// <summary>
    /// 根據(jù)IDs查詢數(shù)據(jù)
    /// </summary>
    /// <param name="lstIds"></param>
    /// <returns></returns>
    Task<List<TEntity>> GetByIds(List<object> lstIds);

    /// <summary>
    /// 根據(jù)條件查詢一條數(shù)據(jù)
    /// </summary>
    /// <param name="whereExpression"></param>
    /// <returns></returns>
    Task<TEntity> GetSingleByFilter(Expression<Func<TEntity, bool>> whereExpression);

    /// <summary>
    /// 查詢所有數(shù)據(jù)
    /// </summary>
    /// <returns></returns>
    Task<List<TEntity>> Get();

    /// <summary>
    /// 查詢數(shù)據(jù)列表
    /// </summary>
    /// <param name="whereExpression">條件表達(dá)式</param>
    /// <returns>數(shù)據(jù)列表</returns>
    Task<List<TEntity>> Get(Expression<Func<TEntity, bool>> whereExpression);


    /// <summary>
    /// 查詢數(shù)據(jù)列表
    /// </summary>
    /// <param name="whereExpression">條件表達(dá)式</param>
    /// <param name="orderByExpression">排序表達(dá)式</param>
    /// <param name="isAsc">是否升序排序</param>
    /// <returns></returns>
    Task<List<TEntity>> Get(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression = null, bool isAsc = true);

    /// <summary>
    /// 分頁查詢
    /// </summary>
    /// <param name="selector"></param>
    /// <param name="whereExpression"></param>
    /// <param name="intPageIndex"></param>
    /// <param name="intPageSize"></param>
    /// <param name="orderDescSelector"></param>
    /// <returns></returns>
    Task<PaginatedViewModel<TResult>> Get<TResult>(Expression<Func<TEntity, TResult>> selector, Expression<Func<TEntity, bool>> whereExpression, int intPageIndex, int intPageSize, Expression<Func<TEntity, object>> orderDescSelector = null);


    /// <summary>
    /// 分頁查詢
    /// </summary>
    /// <param name="selector"></param>
    /// <param name="whereExpression"></param>
    /// <param name="intPageIndex"></param>
    /// <param name="intPageSize"></param>
    /// <param name="orderDescSelector"></param>
    /// <returns></returns>
    Task<PaginatedViewModel<TEntity>> Get(Expression<Func<TEntity, bool>> whereExpression, int intPageIndex, int intPageSize, Expression<Func<TEntity, object>> orderDescSelector = null);
}
public interface IBaseRepository { }

?事務(wù)接口:

public interface IUnitOfWork
{
    /// <summary>
    /// 
    /// </summary>
    /// <returns></returns>
    SqlSugarClient GetDbClient();
    /// <summary>
    /// 
    /// </summary>
    void BeginTran();
    /// <summary>
    /// 
    /// </summary>
    void CommitTran();
    /// <summary>
    /// 
    /// </summary>
    void RollbackTran();
}

2)、SqlSugarRepository接口實(shí)現(xiàn)


/// <summary>
/// 
/// </summary>
/// <typeparam name="TEntity"></typeparam>
public class SqlSugarRepository<TEntity> : ISqlSugarRepository<TEntity> where TEntity : class, new()
{
    private readonly SqlSugarClient _dbBase;

    public ISqlSugarClient Db
    {
        get { return _dbBase; }
    }

    /// <summary>
    /// 
    /// </summary>
    /// <param name="unitOfWork"></param>
    public SqlSugarRepository(IUnitOfWork unitOfWork)
    {
        _dbBase = unitOfWork.GetDbClient();
    }

    /// <summary>
    /// 執(zhí)行查詢SQL語句
    /// 只支持查詢操作,并且支持拉姆達(dá)分頁
    /// </summary>
    /// <param name="sql"></param>
    /// <returns></returns>
    public async Task<List<TEntity>> ExecuteSql(string sql)
    {
        return await Db.SqlQueryable<TEntity>(sql).ToListAsync();
    }


    /// <summary>
    /// 通過Ado方法執(zhí)行SQL語句
    /// 支持任何SQL語句
    /// </summary>
    /// <param name="sql"></param>
    /// <param name="whereObj">參數(shù)</param>
    /// <returns></returns>
    public async Task<List<TEntity>> ExecuteAllSql(string sql, object whereObj = null)
    {
        return await Task.Run(() => Db.Ado.SqlQuery<TEntity>(sql, whereObj));
    }

    /// <summary>
    /// 根據(jù)ID查詢一條數(shù)據(jù)
    /// </summary>
    /// <param name="objId"></param>
    /// <returns></returns>
    public async Task<TEntity> GetById(object objId)
    {
        return await Db.Queryable<TEntity>().In(objId).SingleAsync();
    }

    /// <summary>
    /// 根據(jù)IDs查詢數(shù)據(jù)
    /// </summary>
    /// <param name="lstIds">id列表</param>
    /// <returns>數(shù)據(jù)實(shí)體列表</returns>
    public async Task<List<TEntity>> GetByIds(List<object> lstIds)
    {
        return await Db.Queryable<TEntity>().In(lstIds).ToListAsync();
    }

    /// <summary>
    /// 插入實(shí)體
    /// </summary>
    /// <param name="entity">實(shí)體類</param>
    /// <returns></returns>
    public async Task<int> Add(TEntity entity)
    {
        var insert = Db.Insertable(entity);
        return await insert.ExecuteCommandAsync();
    }

    /// <summary>
    /// 批量插入實(shí)體
    /// </summary>
    /// <param name="listEntity">實(shí)體集合</param>
    /// <returns>影響行數(shù)</returns>
    public async Task<int> Add(List<TEntity> listEntity)
    {
        return await Db.Insertable(listEntity.ToArray()).ExecuteCommandAsync();
    }

    /// <summary>
    /// 更新實(shí)體
    /// </summary>
    /// <param name="entity">實(shí)體類</param>
    /// <returns></returns>
    public async Task<bool> Update(TEntity entity)
    {
        return await Db.Updateable(entity).ExecuteCommandHasChangeAsync();
    }

    /// <summary>
    /// 批量更新實(shí)體
    /// </summary>
    /// <param name="listEntity">實(shí)體類</param>
    /// <returns></returns>
    public async Task<int> Update(List<TEntity> listEntity)
    {
        return await Db.Updateable(listEntity).ExecuteCommandAsync();
    }

    /// <summary>
    /// 根據(jù)實(shí)體刪除數(shù)據(jù)
    /// </summary>
    /// <param name="entity">實(shí)體</param>
    /// <returns></returns>
    public async Task<bool> Delete(TEntity entity)
    {
        return await Db.Deleteable(entity).ExecuteCommandHasChangeAsync();
    }

    /// <summary>
    /// 根據(jù)實(shí)體集合批量刪除數(shù)據(jù)
    /// </summary>
    /// <param name="models"></param>
    /// <returns></returns>
    public async Task<bool> Delete(List<TEntity> models)
    {
        return await Db.Deleteable(models).ExecuteCommandHasChangeAsync();
    }

    /// <summary>
    /// 根據(jù)ID刪除數(shù)據(jù)
    /// </summary>
    /// <param name="id">ID</param>
    /// <returns></returns>
    public async Task<bool> DeleteById(object id)
    {
        return await Db.Deleteable<TEntity>(id).ExecuteCommandHasChangeAsync();
    }

    /// <summary>
    /// 根據(jù)IDs批量刪除數(shù)據(jù)
    /// </summary>
    /// <param name="ids">ID集合</param>
    /// <returns></returns>
    public async Task<bool> DeleteByIds(List<object> ids)
    {
        return await Db.Deleteable<TEntity>().In(ids).ExecuteCommandHasChangeAsync();
    }

    /// <summary>
    /// 根據(jù)條件查詢數(shù)據(jù)是否存在
    /// </summary>
    /// <param name="whereExpression"></param>
    /// <returns></returns>
    public async Task<bool> GetAnyByFilter(Expression<Func<TEntity, bool>> whereExpression)
    {
        return await Db.Queryable<TEntity>().AnyAsync(whereExpression);
    }

    /// <summary>
    /// 根據(jù)條件查詢一條數(shù)據(jù)
    /// </summary>
    /// <param name="whereExpression"></param>
    /// <returns></returns>
    public async Task<TEntity> GetSingleByFilter(Expression<Func<TEntity, bool>> whereExpression)
    {
        return await Db.Queryable<TEntity>().FirstAsync(whereExpression);
    }

    /// <summary>
    /// 查詢所有數(shù)據(jù)
    /// </summary>
    /// <returns></returns>
    public async Task<List<TEntity>> Get()
    {
        return await Db.Queryable<TEntity>().ToListAsync();
    }

    /// <summary>
    /// 查詢數(shù)據(jù)列表----按條件表達(dá)式
    /// </summary>
    /// <param name="whereExpression">條件表達(dá)式</param>
    /// <returns>數(shù)據(jù)列表</returns>
    public async Task<List<TEntity>> Get(Expression<Func<TEntity, bool>> whereExpression)
    {
        return await Db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).ToListAsync();
    }

    /// <summary>
    /// 查詢數(shù)據(jù)列表----按條件表達(dá)式、排序表達(dá)式
    /// </summary>
    /// <param name="whereExpression">條件表達(dá)式</param>
    /// <param name="orderByExpression">排序表達(dá)式</param>
    /// <param name="isAsc">是否升序排序</param>
    /// <returns></returns>
    public async Task<List<TEntity>> Get(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression = null, bool isAsc = true)
    {
        return await Db.Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToListAsync();
    }

    /// <summary>
    /// 分頁查詢
    /// </summary>
    /// <param name="selector"></param>
    /// <param name="whereExpression">條件表達(dá)式</param>
    /// <param name="intPageIndex">頁碼</param>
    /// <param name="intPageSize">頁大小</param>
    /// <param name="orderDescSelector">排序字段</param>
    /// <returns></returns>
    public async Task<PaginatedViewModel<TResult>> Get<TResult>(Expression<Func<TEntity, TResult>> selector, Expression<Func<TEntity, bool>> whereExpression, int intPageIndex, int intPageSize, Expression<Func<TEntity, object>> orderDescSelector = null)
    {
        var query = Db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression);

        query = query.OrderByIF(orderDescSelector != null, orderDescSelector);

        var totalCount = 0;
        var results = query.Select(selector).ToPageList(intPageIndex, intPageSize, ref totalCount).ToList();

        var basePage = new PaginatedViewModel<TResult>(intPageIndex, intPageSize, totalCount, results);

        return await Task.FromResult(basePage);
    }

    /// <summary>
    /// 分頁查詢
    /// </summary>
    /// <param name="selector"></param>
    /// <param name="whereExpression">條件表達(dá)式</param>
    /// <param name="intPageIndex">頁碼</param>
    /// <param name="intPageSize">頁大小</param>
    /// <param name="orderDescSelector">排序字段</param>
    /// <returns></returns>
    public async Task<PaginatedViewModel<TEntity>> Get(Expression<Func<TEntity, bool>> whereExpression, int intPageIndex, int intPageSize, Expression<Func<TEntity, object>> orderDescSelector = null)
    {
        var query = Db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression);

        query = query.OrderByIF(orderDescSelector != null, orderDescSelector);

        var totalCount = 0;

        var results = query.ToPageList(intPageIndex, intPageSize, ref totalCount).ToList();

        var basePage = new PaginatedViewModel<TEntity>(intPageIndex, intPageSize, totalCount, results);

        return await Task.FromResult(basePage);
    }
}

事務(wù)接口實(shí)現(xiàn):

public class UnitOfWork : IUnitOfWork, IDisposable
{
    private readonly ISqlSugarClient _sqlSugarClient;

    private bool _disposed = false;

    public UnitOfWork(ISqlSugarClient sqlSugarClient)
    {
        _sqlSugarClient = sqlSugarClient;
    }

    public SqlSugarClient GetDbClient()
    {
        return (SqlSugarClient)_sqlSugarClient;
    }

    public void BeginTran()
    {
        GetDbClient().BeginTran();
    }

    public void CommitTran()
    {
        try
        {
            GetDbClient().CommitTran();
            Dispose();
        }
        catch
        {
            GetDbClient().RollbackTran();
            Dispose();
        }
    }

    public void RollbackTran()
    {
        GetDbClient().RollbackTran();
        Dispose();
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    public void Dispose(bool disposing)
    {
        if (_disposed) return;

        if (disposing)
        {
            GetDbClient()?.Dispose();
        }

        _disposed = true;
    }

    ~UnitOfWork() => Dispose(false);
}

分頁查詢模型:

public class PaginatedViewModel<T>
{
    public int PageIndex { get; private set; }

    public int PageSize { get; private set; }

    public long Count { get; private set; }

    public IEnumerable<T> Data { get; private set; }

    public PaginatedViewModel(int pageIndex, int pageSize, long count, IEnumerable<T> data)
    {
        PageIndex = pageIndex;
        PageSize = pageSize;
        Count = count;
        Data = data;
    }
}

3、SqlSugar在項(xiàng)目中的使用

1)、定義及初始化

private readonly ISqlSugarRepository<StatEquipmentInfo> _statEquipmentInfoRepository;

public GetStatusInfoHandler(ISqlSugarRepository<StatEquipmentInfo> statEquipmentInfoRepository)
{
   _statEquipmentInfoRepository = statEquipmentInfoRepository;
}

2)、使用

var infos = await _statEquipmentInfoRepository.GetSingleByFilter(s => s.EId == requestDtoModel.EId && s.StatDate == requestDtoModel.StatDate && s.ETypeId == requestDtoModel.ETypeId);
            

其他函數(shù)的使用,按照接口規(guī)范要求使用即可,在這里就不過多贅敘了。文章來源地址http://www.zghlxwxcb.cn/news/detail-401893.html

到了這里,關(guān)于C# ORM模式之 SqlSugar使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ORM核心功能之導(dǎo)航屬性- EFCore和 SqlSugar

    導(dǎo)航屬性是作為.NET ORM核心功能中的核心,在SqlSugar沒有支持導(dǎo)航屬性前,都說只是一個(gè)高級DbHelper, 經(jīng)過3年的SqlSugar重構(gòu)已經(jīng)擁有了一套 非常成熟的導(dǎo)航屬性體系,本文不是重點(diǎn)講SqlSugar而是重點(diǎn)講導(dǎo)航屬性的作用,讓更多寫Sql人還未使用ORM的人了解到ORM的作用。 ? 用戶根據(jù)

    2024年02月07日
    瀏覽(17)
  • .NET ORM核心功能之導(dǎo)航屬性- EFCore和 SqlSugar

    導(dǎo)航屬性是作為.NET ORM核心功能中的核心,在SqlSugar沒有支持導(dǎo)航屬性前,都說只是一個(gè)高級DbHelper, 經(jīng)過3年的SqlSugar重構(gòu)已經(jīng)擁有了一套 非常成熟的導(dǎo)航屬性體系,本文不是重點(diǎn)講SqlSugar而是重點(diǎn)講導(dǎo)航屬性的作用,讓更多寫Sql人還未使用ORM的人了解到ORM的作用。 ? 用戶根據(jù)

    2024年02月07日
    瀏覽(18)
  • .NET-4.ORM 常見框架EFcorn、Dapper、SqlSugar、FreeSql 和ADO.NET

    .NET-4.ORM 常見框架EFcorn、Dapper、SqlSugar、FreeSql 和ADO.NET

    學(xué)習(xí)參考: 1. .NET 6教程,.Net Core 2022視頻教程,楊中科主講— 以及資料參考 2. 官方文檔EF core 常用的語句 3..netmvc https://www.cnblogs.com/1016391912pm/p/12024671.html https://github.com/dotnet/EntityFramework.Docs/tree/main/samples/core/Querying/Overview 第一個(gè)EFCore應(yīng)用 https://docs.microsoft.com/zh-cn/ef/core/modeli

    2024年02月04日
    瀏覽(21)
  • JAVA ORM Bee的設(shè)計(jì)模式分析

    創(chuàng)建型 工廠模式(Factory Pattern) ? ? 日志工廠 LoggerFactory 靜態(tài)工廠模式 *(Static Factory) ?? ?BeeFactoryHelper 單例模式(Singleton Pattern) ? ? 使用單例模式管理系統(tǒng)的配置信息 ?HoneyConfig 建造者模式(Builder Pattern) ? ? 各種不同產(chǎn)商的數(shù)據(jù)源工具DataSource實(shí)例化; ?? ?屏蔽不

    2024年02月01日
    瀏覽(16)
  • SqlSugar框架之WPF應(yīng)用端功能介紹

    SqlSugar框架之WPF應(yīng)用端功能介紹

    ?WPF應(yīng)用端是我們《SqlSugar開發(fā)框架》多端界面中的一部分,和Winform前端框架、Vue3+ElementPlus前端、UniApp+Thorn移動端,組成一個(gè)完整的整體框架,后端服務(wù)是基于SqlSugar的基礎(chǔ)ORM的.netcore框架,提供Web API服務(wù)供各個(gè)前端使用,底層支持多種數(shù)據(jù)庫,包括SqlServer、Oracle、Mysql、Po

    2024年02月08日
    瀏覽(17)
  • 我們在SqlSugar開發(fā)框架中,用到的一些設(shè)計(jì)模式

    我們在SqlSugar開發(fā)框架中,用到的一些設(shè)計(jì)模式

    我們在《SqlSugar開發(fā)框架》中,有時(shí)候都會根據(jù)一些需要引入一些設(shè)計(jì)模式,主要的目的是為了解決問題提供便利和代碼重用等目的。而不是為用而用,我們的目的是解決問題,并在一定的場景下以水到渠成的方式處理。不過引入任何的設(shè)計(jì)模式,都會增加一定的學(xué)習(xí)難度,

    2024年02月21日
    瀏覽(24)
  • C#調(diào)用SqlSugar操作達(dá)夢數(shù)據(jù)庫報(bào)錯“無效的表或視圖名”

    C#調(diào)用SqlSugar操作達(dá)夢數(shù)據(jù)庫報(bào)錯“無效的表或視圖名”

    ??安裝達(dá)夢數(shù)據(jù)庫后,使用SqlSugar連接測試數(shù)據(jù)庫并基于DBFirst方式創(chuàng)建數(shù)據(jù)庫表對應(yīng)的類,主要代碼如下: ??運(yùn)行到CreateClassFile函數(shù)時(shí)報(bào)如下錯誤: ??通過達(dá)夢管理工具查看數(shù)據(jù)庫,PERSON數(shù)據(jù)庫下有ADDRESS表,不清楚為什么報(bào)錯。 ??百度錯誤信息,檢索結(jié)果中介紹可

    2024年01月25日
    瀏覽(21)
  • 基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(28)-- 快速構(gòu)建系統(tǒng)參數(shù)管理界面

    基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(28)-- 快速構(gòu)建系統(tǒng)參數(shù)管理界面

    在參照一些行業(yè)系統(tǒng)軟件的時(shí)候,發(fā)現(xiàn)一個(gè)做的挺不錯的系統(tǒng)功能-系統(tǒng)參數(shù)管理,相當(dāng)于把任何一個(gè)基礎(chǔ)的系統(tǒng)參數(shù)碎片化進(jìn)行管理,每次可以讀取一個(gè)值進(jìn)行管理,這樣有利于我們快速的處理業(yè)務(wù)需求,是一個(gè)挺好的功能。本篇隨筆模擬這個(gè)功能,基于SqlSugar開發(fā)框架的基

    2023年04月23日
    瀏覽(34)
  • 思通輿情 是一款開源免費(fèi)的輿情系統(tǒng) 介紹

    思通輿情 是一款開源免費(fèi)的輿情系統(tǒng) 介紹

    思通輿情 是一款開源免費(fèi)的輿情系統(tǒng)。 支持本地化部署,支持在線體驗(yàn)。 支持對海量輿情數(shù)據(jù)分析和挖掘。 無論你是使用者還是共同完善的開發(fā)者,歡迎 pull request 或者 留言對我們提出建議。 您的支持和參與就是我們堅(jiān)持開源的動力!請? ?star?或者?fork! 思通輿情 的功能

    2024年04月13日
    瀏覽(26)
  • 第一單元  ORM 介紹

    第一單元 ORM 介紹

    需要有的知識點(diǎn): c# 基礎(chǔ)以及c#高級基礎(chǔ) Ado.net 基礎(chǔ) SqlServer 以及MySQL (都需要高級部分) Asp.net Mvc Core 基礎(chǔ) ? (1) SQL 拼不對,錯還不會找 (2) 開發(fā)效率低 (3) 如果發(fā)現(xiàn)字段需要重命名,得挨個(gè)地方去修改 (4) 老板說要把SQLServer換成MySQL數(shù)據(jù)庫,并且需要快速上線,此時(shí)你想的不

    2024年02月05日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包