首页 > 数据库 >ORM - SqlSugar

ORM - SqlSugar

时间:2024-07-03 09:42:35浏览次数:14  
标签:void list public ORM new sqlSugarScope class SqlSugar


//SqlSugarHelper.DemoDbContext.GenerateModels();
var list = SqlSugarHelper.DemoDbContext.Query<ORMClsLib.dbo.DemoEntity>();

var item = new ORMClsLib.dbo.DemoEntity()
{
  operatorName = "test",
};
SqlSugarHelper.DemoDbContext.InsertOrUpdate(item);
SqlSugarHelper.DemoDbContext.Delete<ORMClsLib.dbo.DemoEntity>(0);
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;

namespace ORMClsLib
{
    public class SqlSugarHelper
    {
        /// <summary>
        /// 参数
        /// </summary>
        private static readonly DefaultParams _defaultParams = DefaultParams.Gethandler();

        //用单例模式
        private static SqlSugarScope ServerDb = new SqlSugarScope(new ConnectionConfig()
        {   //连接符字串
            ConnectionString = string.Format("server={0};database={1};uid=sa;pwd={2}", _defaultParams.IpSource, _defaultParams.DatabaseName, _defaultParams.Password),
            DbType = DbType.SqlServer,//数据库类型
            IsAutoCloseConnection = true //不设成true要手动close
        },
      db =>
      {
          //(A)全局生效配置点
          //调试SQL事件,可以删掉
          db.Aop.OnLogExecuting = (sql, pars) =>
              {
                  //获取原生SQL
                  Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));
              };
      });

        public static DbContext DemoDbContext = new DbContext(ServerDb);
    }
    public sealed class DbContext
    {
        private readonly SqlSugarScope _sqlSugarScope;

        public DbContext(SqlSugarScope sqlSugarScope)
        {
            _sqlSugarScope = sqlSugarScope;
        }
        public void GenerateModels()
        {
            _sqlSugarScope.DbFirst.IsCreateAttribute().FormatFileName(it => "" + it).FormatClassName(it => "" + it).CreateClassFile("dbo", "ORMClsLib.dbo");
        }
        /// <summary>
        /// 查询
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="expression"></param>
        /// <returns></returns>
        public List<T> Query<T>(Expression<Func<T, bool>> expression = null) where T : class
        {
            if (expression == null)
            {
                return _sqlSugarScope.Queryable<T>().ToList();
            }
            return _sqlSugarScope.Queryable<T>().Where(expression).ToList();
        }

        #region Delete
        /// <summary>
        /// 批量删除
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="list"></param>
        public void Delete<T>(IEnumerable<T> list) where T : class, new()
        {
            _sqlSugarScope.Deleteable<T>(list).ExecuteCommand();
        }
        /// <summary>
        /// 指定删除
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="expression"></param>
        public void Delete<T>(Expression<Func<T, bool>> expression) where T : class, new()
        {
            _sqlSugarScope.Deleteable<T>().Where(expression).ExecuteCommand();
        }
        /// <summary>
        /// 主键删除
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="ids"></param>
        public void Delete<T>(params int[] ids) where T : class, new()
        {
            _sqlSugarScope.Deleteable<T>().In(ids).ExecuteCommand();
        }

        #endregion

        #region Add or Update
        public void InsertOrUpdate<T>(List<T> list) where T : class, new()
        {
            // 大数据
            if (list.Count > 1000)
            {
                _sqlSugarScope.Fastest<T>().BulkMerge(list);
            }
            else // 若主键递增 id=0 插入;!=0 更新
            {
                _sqlSugarScope.Storageable(list).DefaultAddElseUpdate().ExecuteCommand();
            }
        }

        public void InsertOrUpdate<T>(T item) where T : class, new()
        {
            var x = _sqlSugarScope.Storageable(item).ToStorage();
            x.AsInsertable.ExecuteCommand();
            x.AsUpdateable.ExecuteCommand();
        }

        #endregion
    }
}


namespace ORMClsLib.dbo
{
    ///<summary>
    ///
    ///</summary>
    [SugarTable("DemoEntity")]
    public partial class DemoEntity
    {
        public DemoEntity()
        {
        }
        /// <summary>
        /// Desc:
        /// Default:
        /// Nullable:False
        /// </summary>           
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public int id { get; set; }

        /// <summary>
        /// Desc:
        /// Default:
        /// Nullable:True
        /// </summary>   
        [SugarColumn(ColumnName = "operator")]
        public string operatorName { get; set; }
    }
}

标签:void,list,public,ORM,new,sqlSugarScope,class,SqlSugar
From: https://www.cnblogs.com/wesson2019-blog/p/18280989

相关文章

  • WebStorm 2024 for Mac JavaScript前端开发工具
    Mac分享吧文章目录效果一、下载软件二、开始安装1、双击运行软件(适合自己的M芯片版或Intel芯片版),将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功3、打开访达,点击【文稿】。将安装包内的【ja-netfilter】文件夹拖到文稿中4、填写内容,修改用......
  • esp32-s3+GC9A01基于vs code+PlatformIO+ardunio框架+Squareline UI 移植
    文章目录前言一、SquarelineStudio是什么?二、使用步骤1.创建测试的UI2.工程导出3.工程移植总结前言本节描述了使用SquarelineStudio创建简单UI,导出文件后如何与LVGL集成并在PlatformIO环境中进行编译和下载过程。环境如下:platform=espressif32board=esp32-s......
  • WPF Image scalertransform translatetransform mvvm,custom delegate command Comman
    //xaml<Windowx:Class="WpfApp187.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mi......
  • 自定义ORM框架
    手撕ORM框架1.创建Maven工程2.导入依赖<dependencies><!--引入jdbc的依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><versi......
  • Transformer模型学习
    Transformer模型是深度学习领域的一种创新架构,尤其在自然语言处理(NLP)任务中表现出色。它是由Vaswani等人在2017年的论文《AttentionisAllYouNeed》中首次提出的。以下是对Transformer模型的详细介绍:Transformer的起源和重要性Transformer模型的提出是为了解决传统循环......
  • Transformer模型
    Transformer模型是深度学习领域的一种创新架构,尤其在自然语言处理(NLP)任务中表现出色。它是由Vaswani等人在2017年的论文《AttentionisAllYouNeed》中首次提出的。以下是对Transformer模型的详细介绍:Transformer的起源和重要性Transformer模型的提出是为了解决传统循环......
  • 低资源语言的Transformer挑战:探索与机遇
    低资源语言的Transformer挑战:探索与机遇在自然语言处理(NLP)的广阔领域中,低资源语言(也称为小种语言或少数民族语言)面临着独特的挑战。尽管Transformer模型在高资源语言上取得了巨大成功,但其在低资源语言上的应用仍然充满挑战。本文将深入探讨这些挑战,并探索可能的解决方案。......
  • MyBatis是什么以及为什么需要ORM框架、快速搭建
    MyBatis是什么MyBatis的前身是Ibatis,本质是一款半自动化的ORM框架,除了能对POJO进行ORM映射之外,还可以编写SQL脚本语句。主要是为了解决我们平时开发中经常写的JDBC代码,将繁琐的JDBC代码封装起来,化繁为简。MyBatis映射文件四要素:1.SQL语句2.映射规则3.POJO4.Mapper接口为......
  • String.format 日期占位 去除左侧的填充0
    原文链接: https://baijiahao.baidu.com/s?id=1764834107971798887&wfr=spider&for=pc假设我们要输出当前的日期时间,我们可以使用如下代码:Datedate=newDate();System.out.println("输出结果:"+String.format("%tF%tT",date,date));输出结果为:输出结果:2023-......
  • 对Transformer的一些理解
    在学习Transformer这个模型前对seq2seq架构有个了解时很有必要的先上图输入和输出首先理解模型时第一眼应该理解输入和输出最开始我就非常纠结有一个Inputs,一个Outputs(shiftright)和一个OutputProbabilities,首先需要借助这三个输入/输出来初步了解该模型的运行方式。这......