首页 > 数据库 >SqlSugar仓储

SqlSugar仓储

时间:2023-07-19 12:32:24浏览次数:37  
标签:Repository System 仓储 base new var using SqlSugar

仓储说明

SqlSugar5.0仓储模式可以让你的方法更加的规范,需要什么方法都封装到仓储中,下次就能重复使用,并且能很好的和你业务拆分开, 这种设计模式简单粗暴用起来也方便

官方文档:仓储定义 - SqlSugar 5x - .NET果糖网 (donet5.com)

仓储方法

仓储有一套自带的数据库操作方法,比起 db.xx.xxx来说可能更简便些满足一些常用需求, 复杂的功能还是用 db.xxx.xxx

//查询
var data1 = base.GetById(1); //根据id查询
var data2 = base.GetList(); //查询所有
var data3 = base.GetList(it => it.Id == 1); //TOP1条件
var data4 = base.GetSingle(it => it.Id == 1); //查询单条记录,结果集不能超过1,不然会提示错误
var data = base.GetFirst(it => it.Id == 1); //查询第一条记录
var p = new PageModel()
{
    PageIndex = 1, PageSize = 2
};
var data5 = base.GetPageList(it => it.Name == "xx", p);
Console.Write(p.PageCount);
var data6 = base.GetPageList(it => it.Name == "xx", p, it => it.Name, OrderByType.Asc);
Console.Write(p.PageCount);
List < IConditionalModel > conModels = new List < IConditionalModel > ();
conModels.Add(new ConditionalModel()
{
    FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "1"
}); //id=1
var data7 = base.GetPageList(conModels, p, it => it.Name, OrderByType.Asc);
var data8 = base.AsQueryable()
    .Where(x => x.Id == 1)
    .ToList(); //使用Queryable
//插入
base.Insert(insertObj);
base.InsertRange(InsertObjs);
var id = base.InsertReturnIdentity(insertObj); //插入返回自增
var SnowflakeId = InsertReturnSnowflakeId(insertObj); //插入返回雪花ID
base.AsInsertable(insertObj)
    .ExecuteCommand(); //复杂功能使用Insertable
//删除
base.Delete(T); //实体删除 需要有主键
base.Delete(List < T > ); //集合删除 需要有主键
base.DeleteById(1);
base.DeleteByIds(new object[]
{
    1
    , 2
}); //数组带是 ids方法 ,封装传 object [] 类型
//技巧 int [] 转换成 object[]  写法:ids.Cast<object>().ToArray()
base.Delete(it => it.Id == 1);
base.AsDeleteable()
    .Where(it => it.Id == 1)
    .ExecuteCommand(); //复杂功能用 Deleteable
//更新
base.Update(insertObj);
base.UpdateRange(InsertObjs);
base.Update(it => new Order()
{
    Name = "a" /*可以多列*/
}, it => it.Id == 1); //只更新name 并且id=1
base.AsUpdateable(insertObj)
    .UpdateColumns(it => new
    {
        it.Name
    })
    .ExecuteCommand(); //复杂功能用 Updateable 
//高级操作
base.AsSugarClient // 获取完整的db对象
base.AsTenant // 获取多库相关操作
//切换仓储
base.ChangeRepository < Repository < OrderItem >> () //支持多租户和扩展方法,使用SqlSugarScope单例(或者SqlSugarClient Scope注入)
base.Change < OrderItem > () //只支持自带方法和单库

仓储定义

定义 After.Repository 类库

定义的Repository是公用类

using After.Generic;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace After.Repository.Repository
{
    public class Repository < T >: SimpleClient < T > where T: class, new()
    {
        public Repository(ISqlSugarClient context = null): base(context) //注意这里要有默认值等于null
        {
            if (context == null)
            {
                string[] sqlText = Type2.SqlText();
                base.Context = new SqlSugarClient(new ConnectionConfig()
                {
                    //DbType = SqlSugar.DbType.SqlServer,
                    DbType = (DbType) Convert.ToSByte(sqlText[1])
                        , InitKeyType = InitKeyType.Attribute
                        , IsAutoCloseConnection = true
                        , ConnectionString = sqlText[0]
                });
            }
        }
        /// <summary>
        /// 扩展方法,自带方法不能满足的时候可以添加新方法
        /// </summary>
        /// <returns></returns>
        public List < T > CommQuery(string json)
        {
            //base.Context.Queryable<T>().ToList();可以拿到SqlSugarClient 做复杂操作
            return null;
        }
    }
}

定义IService Service类

IConfigService.cs

using After.Model;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace After.IService.IService
{
    public interface IConfigService
    {
        Task < List < config >> GetAllAsync();
    }
}

ConfigService.cs

using After.IService.IService;
using After.Model;
using After.Repository.Repository;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace After.Service
{
    public class ConfigService: Repository < config > , IConfigService
    {
        public ConfigService()
        {}
        /// <summary>
        /// 查询全部
        /// </summary>
        /// <returns></returns>
        public async Task < List < config >> GetAllAsync()
        {
            return await base.GetListAsync();
        }
    }
}

使用

//创建实例
ConfigService configService = new ConfigService();
var date = configService.GetAllAsync();
foreach(var item in date.Result)
{
    MessageBox.Show(item.ConfigText);
}

标签:Repository,System,仓储,base,new,var,using,SqlSugar
From: https://blog.51cto.com/u_12828212/6774191

相关文章

  • NET7中sqlsugar的使用
    NET7中sqlsugar的使用仿《深入浅出ASP.NETCORE》这书里的IRepository和RepositoryBase usingSqlSugar;usingSystem.Linq.Expressions;namespaceWebApplication1.DAL{///<summary>///所有仓储的约定,此接口仅作为约定,用于标识他们///</summary>......
  • NET6使用AutoFac依赖注入(仓储模式)
    第一次使用autofac,然后net6最新长期支持的,就想着在net6的基础上使用autofac,我对依赖注入理解很差,一知半解的搞了好久。好在有了一点点的头绪,记录下省的以后忘记(突然发现自己以前用过的东西忘了好多……)首先你要有个仓储模式的项目、这个自己搭建吧在Program.cs文件中:配置程序......
  • sqlsugar 使用汇总 (大数据写入、更新,大数据更新 ORM, db.Fastest文档)
     https://www.donet5.com/Home/Doc?typeId=2404  大数据写入、更新,大数据更新ORM,db.Fastest文档//插入100万10秒不到db.Fastest<RealmAuctionDatum>().BulkCopy(GetList());//性能比现有任何Bulkcopy都要快30%//如果数据库现有数据比较多出现比较慢,这个时候可以试试......
  • 利用代码生成工具快速生成基于SqlSugar框架的Winform界面项目
    我们接触一个新事物的时候,如果一个事物能够给我们带来非常直观的感官认识,那么我们就很容易接受,反之可能需要很长时间的潜移默化的了解认识才能接受。万物化繁为简,透过本质看表象,往往也是一个认知迭代深入的过程。在我介绍很多篇随笔《SqlSugar开发框架》,能够看完的肯定不会是一开......
  • Sqlsugar从入门到放弃
    环境要求VS2022/.Net6/SqlServer安装方式项目内Nuget包中引用:.NetCore3&5&6&7&8——》SqlSugarCore.NetCore2——》SqlSugarCore_NetCore2.NetFramework——》SqlSugar 一、数据库迁移和映射1、Dbfirst 示例: 2、Codefirst(1)基础操作 (2)......
  • 叉车技改方案:助力仓储物流行业提升叉车安全系数
    随着现代物流业的发展,叉车已成为仓储过程中不可或缺的一部分。然而,叉车事故却时有发生,这给工作人员的生命安全和整个物流流程带来了很大的风险与损失。为了提高叉车使用的安全系数,越来越多的企业开始重视叉车技改。叉车技改是指对叉车的设计、结构、功能和性能进行改造升级,包括车......
  • RFID技术在仓储管理中的应用
    RFID技术是一种无线通信的自动识别技术,它通过无线射频信号以自动识别多个目标对象并进行相互通信。识别工作无须人工干预,可用于各种恶劣环境。仓储管理是RFID技术应用的一个重要方面,在出版行业中,最突出的问题就是各个图书流通环节交流耗费大量的时间和人力、物力成本,并且信息失真。......
  • SqlSugar列转行扩展方法
    参考C#行列互转List、DataTable和匿名对象行转列SQLServer列转行的实现MemberExpression类MemberInfo类代码点击查看代码-扩展方法publicstaticclassUnPivotQueryMethod{publicstaticList<TRow>ToUnPivotList<T,TRow,TCol,TColName,TData......
  • ORM核心功能之导航属性- EFCore和 SqlSugar
    导航属性导航属性是作为ORM核心功能中的核心,在SqlSugar没有支持导航属性前,都说只是一个高级DbHelper,经过3年的SqlSugar重构已经拥有了一套非常成熟的导航属性体系,本文不是重点讲SqlSugar而是重点讲导航属性的作用,让更多写Sql人还未使用ORM的人了解到ORM的作用。 1.复杂的查......
  • 基于SqlSugar的开发框架循序渐进介绍(30)-- 整合客户关系管理系统模块功能
    以前在随笔《Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示 》的几篇随笔中介绍过基于WInform开发框架开发的CRM系统,系统的功能主要也是围绕着客户相关信息来进行管理的,经过一些客户的定制应用,以及框架各种功能的完善,系统也已经很完善了,不过不同的CRM侧重......