Web开发:SQLsugar的安装和使用

news2024/12/26 11:19:33

一、安装

第一步,在你的项目中找到解决方案,右键-管理解决方案的Nuget

第二步,下载对应的包,注意你的框架是哪个就下载哪个的包,一个项目安装一次包即可

点击应用和确定

安装好后会显示sqlsugar的包

二、使用:增删改查

using SqlSugar;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;

[SugarTable("TestTable")] // 指定实体类对应的数据库表名
class TestTable
{
    [SugarColumn(IsPrimaryKey = true)] // 指定主键列
    public string Id { get; set; }
    
    public string Name { get; set; }

    public int Age { get; set; }

    public string Content { get; set; }

    public int IsEnable { get; set; }

    public int IsDeleted { get; set; }

    public string Stage { get; set; }

    public string Remarks { get; set; }
}

class Test
{
    public static int AddOrUpdate<T>(SqlSugarClient db,T entity) where T : class, new()
    {
        var entityIdProp = GetEntityIdProperty<T>();
        var entityIdValue = entityIdProp.GetValue(entity);
        var dbEntity = db.Queryable<T>().InSingle(entityIdValue);

        if (dbEntity != null)
        {
            // 根据 ID 查询到了记录,执行更新操作
            return db.Updateable(entity).ExecuteCommand();
        }
        else
        {
            // 根据 ID 没有查询到记录,执行插入操作
            return db.Insertable(entity).ExecuteCommand();
        }
    }

    public static PropertyInfo GetEntityIdProperty<T>() where T : class, new()
    {
        var entityType = typeof(T);
        var properties = entityType.GetProperties();

        foreach (var property in properties)
        {
            var attribute = Attribute.GetCustomAttribute(property, typeof(SqlSugar.SugarColumn)) as SqlSugar.SugarColumn;

            if (attribute != null && attribute.IsPrimaryKey)
            {
                return property;
            }
        }

        throw new Exception($"实体类型 {entityType.FullName} 没有定义主键");
    }

    static void Main(string[] args)
    {
        // 创建 SqlSugar 实例
        SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
        {
            ConnectionString = "server = DESKTOP-FTH2P3S; Database = TestDb; Trusted_Connection = SSPI;", // 数据库连接字符串
            DbType = DbType.SqlServer, // 数据库类型
            IsAutoCloseConnection = true, // 是否自动关闭数据库连接
        });

        // 1.插入数据
        var model = new TestTable()
        {
            Id = Guid.NewGuid().ToString(),
            Name = "Tom",
            Age = 18,
            Content = "Hello World",
            IsEnable = 1,
            IsDeleted = 0,
            Stage = "Stage 1",
            Remarks = "Test"
        };
        int insert_code = db.Insertable(model).ExecuteCommand();//返回影响行数

        // 2.查询数据
        var list = db.Queryable<TestTable>().ToList();

        // 3.自定义查询SQL
        var result = db.SqlQueryable<TestTable>("SELECT * FROM TestTable WHERE Age > 30").ToList();

        // 4.更新数据
        var updateModel = db.Queryable<TestTable>().Where(it => it.Id == "8ffd64fc-8aea-4641-a57b-d957ad0dd229").First();
        if (updateModel != null)
        {
            updateModel.Name = "Jerry";
            var update_code = db.Updateable(updateModel).ExecuteCommand();//返回影响行数
        }

        // 5.删除数据
        var delete_code = db.Deleteable<TestTable>().Where(it => it.Id == "8ffd64fc-8aea-4641-a57b-d957ad0dd229").ExecuteCommand();//返回影响行数

        //6.自主封装的方法,有则添加无则插入(根据主键ID匹配)
        var updateModel2 = new TestTable();
        updateModel2.Id = "8ffd64fc-8aea-4641-a57b-d957ad0dd229";
        updateModel2.Name = "SuSu";
        int a = AddOrUpdate<TestTable>(db, updateModel2);//返回影响行数

    }
}

【备注】AddOrUpdate是自己写的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1378278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第一天-socket编程(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式培训笔记,嵌入式硬件,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机领域.https://blog.csdn.net/weixin_3980490…

Unity Shader 开发入门3 —— 坐标空间变换

文章目录 一、变换矩阵1.1 齐次坐标1.2 平移矩阵1.3 旋转矩阵1.4 缩放矩阵1.5 复合变换 二、世界空间变换三、观察空间变换四、裁剪空间变换4.1 视椎体4.2 齐次裁剪空间4.3 视椎体投影方式 五、屏幕空间变换 ​ 在 Shader 开发中存在不同的坐标空间&#xff0c;包括&#xff1a…

代码随想录 516. 最长回文子序列

题目 给你一个字符串 s &#xff0c;找出其中最长的回文子序列&#xff0c;并返回该序列的长度。 子序列定义为&#xff1a;不改变剩余字符顺序的情况下&#xff0c;删除某些字符或者不删除任何字符形成的一个序列。 示例 1&#xff1a; 输入&#xff1a;s “bbbab” 输出&…

docker容器运行elaticsearch和kibana,又把ECS跑爆了

就运行了两个容器一个elasticsearch应一个就是可视化的kibana 开始还好好的后来cpu又爆了 最后只有重启ECS然后再启动这两个服务就好了 去网上找了下解决方法。说是正常情况Kibana第一加载非常耗资源。

openssl快速生成自签名证书

系统&#xff1a;Centos 7.6 确保已安装openssl openssl version生成私钥文件 private.key &#xff08;文件名自定义&#xff09; openssl genpkey -algorithm RSA -out private.key -pkeyopt rsa_keygen_bits:2048-out private.key&#xff1a;生成的私钥文件-algorithm RS…

Vue-14、Vue绑定style样式

1、对象写法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>绑定css样式</title><!--引入vue--><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/v…

Win10系统读不出U盘的四种解决方法

有用户特别喜欢用U盘来保存重要的内容&#xff0c;但有用户反映自己的Win10电脑读取不了U盘&#xff0c;这样用户就不能将Win10电脑上的内容传输到U盘了。下面小编带来四种简单有效的解决方法&#xff0c;解决后Win10电脑上的U盘就能被正常识别&#xff0c;从而恢复对U盘的使用…

揭露欧拉骗局4.“Σ1/n²=π²/6”里的猫腻

自然数平方倒数求和Σ1/n是一个并不复杂的问题&#xff0c;但它困扰了欧洲大陆整整90年&#xff0c;在欧系数学里它被称为“巴塞尔级数”。 解决巴塞尔级数让欧拉一战成名&#xff0c;然而欧拉采用的方法对数学这门学问是严重的侮辱。数学是工具学科&#xff0c;数学的宗旨是化…

NAND Separate Command Address (SCA) 接口数据传输解读

在采用Separate Command Address (SCA) 接口的存储产品中&#xff0c;DQ input burst和DQ output burst又是什么样的策略呢&#xff1f; DQ Input Burst: 在读取操作期间&#xff0c;数据以一种快速并行的方式通过DQ总线传送到控制器。在SCA接口下&#xff0c;虽然命令和地址信…

AI绘画软件Stable Diffusion模型/Lora/VAE文件存放位置

型下载说明&#xff08;下载模型后输入对应参数即可生成&#xff09; 建议直接去civitai.com找模型&#xff0c;如果无法找到可以在幕后模型区找也可以去&#xff0c; 下载好后放入对应的文件夹。进入127.0.0.1:7680 左上角刷新即可看到新的模型。 模型种类 大模型 大模型特…

启动Vue项目,报错:‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序

前言&#xff1a; 最近在打开一个Vue项目的时候&#xff0c;打开之后输入命令行&#xff1a;npm run serve之后发现&#xff0c;报错&#xff1a;vue-cli-service 不是内部或外部命令&#xff0c;也不是可运行的程序&#xff0c;以下是解决方案&#xff1a; 报错图片截图&…

【方差分析原理简介】

文章目录 方差分析&#xff08;Analysis of Variance&#xff0c;简称ANOVA&#xff09;1 方差分析流程2 借助sklean进行基于方差分析的特征筛选3 总结 方差分析&#xff08;Analysis of Variance&#xff0c;简称ANOVA&#xff09; 卡方检验更多的会考虑在衡量两个离散变量是…

redis系列:01 数据类型及操作

redis的数据类型有哪些 string,list,set,sorted_set,hash 操作 sting: set name maliao get name exists name expire name 5 ttl name del name setex name 10 maliao 设置key和过期时间 setnx name maliao 当key不存在时才添加list&#xff1a; lpush letter a lpush le…

FPN网络的实现原理详解

1 前言 FPN网络是一种常见的特征融合模块&#xff0c;在很多模型中都有运用&#xff0c;今天我们就结合代码和论文详细的搞清楚它到底是怎么一回事。 2 原理 原理直接看这一张图就可以了&#xff0c;很直观主要就是把对不同层的特征进行融合&#xff0c;重点还是在于代码的理…

SpringBoot项目如何防止反编译?

SpringBoot项目如何防止反编译&#xff1f; 场景方案项目操作启动方式反编译效果绑定机器启动 场景 最近项目要求部署到其他公司的服务器上&#xff0c;但是又不想将源码泄露出去。要求对正式环境的启动包进行安全性处理&#xff0c;防止客户直接通过反编译工具将代码反编译出…

【服务器】服务器管理 - cockpit开启

开启cockpit #!/bin/bashsed -i s/is():where()/is(*):where(*)/ /usr/share/cockpit/static/login.jssystemctl enable --now cockpit.socket #开启cockpit服务systemctl start cockpit.socket 登录 https://ip:9090

Java--Spring项目生成雪花算法数字(Twitter SnowFlake)

文章目录 前言步骤查看结果 前言 分布式系统常需要全局唯一的数字作为id&#xff0c;且该id要求有序&#xff0c;twitter的SnowFlake解决了这种需求&#xff0c;生成了符合条件的这种数字&#xff0c;本文将提供一个接口获取雪花算法数字。以下为代码。 步骤 SnowFlakeUtils …

一步步指南:从指定时长中提取需求的帧图片,高效剪辑视频

在现代多媒体时代&#xff0c;视频已经成生活中不可或缺的一部分。从视频中提取某一帧图片&#xff0c;或者对视频进行剪辑&#xff0c;都是常见的需求。下面一起来看云炫AI智剪如何从指定时长中提取需求的帧图片&#xff0c;如何高效地剪辑视频。 按指定时长提取视频某帧图片的…

航天民芯一级代理-技术支持-一站式配单 MT9284-28J LED驱动芯片

描述 MT9284是一个升压转换器&#xff0c;设计用于从单电池锂离子电池中驱动多达7个系列的白色led。MT9284使用电流模式&#xff0c;固定频率结构来调节LED电流&#xff0c;它通过外部电流感应电阻来测量。MT9284包括低电压锁定、限流和热过载保护&#xff0c;以防止在输出过载…

探秘Pytest插件pytest-xdist —— 提升测试效率,轻松并行运行测试

在软件开发中&#xff0c;测试是确保代码质量的重要一环。然而&#xff0c;随着项目规模的增大&#xff0c;测试用例的数量也随之增多&#xff0c;测试的执行时间可能成为一个瓶颈。为了解决这个问题&#xff0c;Pytest提供了丰富的插件生态系统&#xff0c;其中 pytest-xdist …